我已经将我看到的一个问题简化为两个简单的库:
我正在尝试创建两个不同的库-一个是较低级别的库,另一个是较高级别的库,就向开发人员公开的概念而言。
两者都是使用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'.虽然会显示此错误,但构建仍然成功。
这是没有正确指定类型的问题吗?或者完全是别的什么东西?
发布于 2016-06-21 05:20:02
https://stackoverflow.com/questions/37923977
复制相似问题