找不到Typescript模块但是webpack仍然构建bundle

时间:2016-06-20 13:34:29

标签: typescript webpack

我已经减少了一个问题,我看到了两个简单的库:

我试图创建两个不同的库 - 一个是较低级别的库,另一个是更高级别的库,就暴露给开发人员的概念而言。

两者都是使用Typescript编写的,并使用webpack构建。两者都旨在能够在Node和Web应用程序中使用。

我遇到的问题是我基本上将Node构建为"默认"构建,Web构建是特殊情况,可以这么说。在更高级别的库中,我将较低级别的库设置为package.json中的依赖项,然后导入捆绑的Web构建。这似乎有效但输出错误。

这是"较低级别"图书馆:https://github.com/hamchapman/typescript-lib-webpack-test

这是"更高级别"图书馆:https://github.com/hamchapman/typescript-lib-webpack-sdk-test

需要在两个平台之间切换的模块是websocket库:Node设置中的faye-websocket和Web设置中的浏览器Websocket。我已经使用webpack使用此配置设置(在较低级别的库中):

const path = require('path')

module.exports = {
  entry: './src/client',
  output: {
    library: 'MultiPlatformClient',
    libraryTarget: 'umd',
    filename: "target/web.js"
  },
  devtool: 'source-map',
  resolve: {
    extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js'],
    modulesDirectories: ['node_modules', 'transports'],
    alias: {
      'ws': 'ws.web'
    }
  },

  module: {
    loaders: [
      { test: /\.tsx?$/, loader: 'ts-loader' }
    ],
    preLoaders: [
      { test: /\.js$/, loader: 'source-map-loader', exclude: /node_modules/ }
    ]
  }
}
然后在client.ts

中按照以下要求

import WebSocket from "ws";

export default class Client {
  public token: string
  public ws: WebSocket

  constructor(token: string) {
    this.token = token
    this.ws = new WebSocket('ws://test.com', [], {})
  }
}

这在低级库中都很好,并且成功构建且没有错误。

但是,这是在更高级别库的package.json中:

  "dependencies": {
    "node-libs-browser": "^1.0.0",
    "multi-platform-client": "git+ssh://git@github.com:hamchapman/typescript-lib-webpack-test.git"
  }

sdk-client.ts文件中

import Client from "multi-platform-client/web";

export default class SDKClient {
  public client: Client

  constructor(token: string) {
    this.client = new Client(token)
  }
}

当我运行webpack时,我得到了这个输出:

 webpack
ts-loader: Using typescript@1.8.10 and /Users/Hami/Pusher/typescript-higher-test/tsconfig.json
Hash: 8fef5a551de36ef9403c
Version: webpack 1.13.1
Time: 1633ms
               Asset     Size  Chunks             Chunk Names
    ./dist/bundle.js  4.67 kB       0  [emitted]  main
./dist/bundle.js.map  5.61 kB       0  [emitted]  main
    + 4 hidden modules

ERROR in ./src/sdk-client.ts
(1,20): error TS2307: Cannot find module 'multi-platform-client/web'.

显示此错误,但构建仍然成功。

这是不正确指定的打字的问题?或者它完全是另一回事?

1 个答案:

答案 0 :(得分:0)