使用Webpack捆绑sha3 /二进制模块
问题描述:
当我捆绑我的源代码时,Webpack会发出警告,因为它无法解析'sha3'模块。使用Webpack捆绑sha3 /二进制模块
$ npm run build
WARNING in ./~/keccakjs/index.js
Module not found: Error: Can't resolve 'sha3' in '<PROJ>\node_modules\keccakjs'
@ ./~/keccakjs/index.js 2:19-34
@ ./~/<lib>/index.js
@ ./lib/<file>.js
原因是该sha3 library没有js文件。
创建库<凸出> \ node_modules \沙三段\建立\发布\ sha3.lib和对象<凸出> \ node_modules \沙三段\建立\发布\ sha3.exp
我可以在我的项目中运行require('sha3')
,但webpack无法解决它。
我看着docs here,关于webpack如何解析库文件。
是否有人可以指示我如何将sha3包含到我的包中?
我的WebPack配置:利用的WebPack二进制装载机从here
module.exports = {
target: 'node',
entry: "./<lib>.js",
devtool: "source-map",
node: {
__dirname: false,
__filename: false,
},
output: {
path: "./dist",
filename: "<lib>.min.js"
},
plugins: [
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
})
]
}
答
什么是真正结束了对我的工作是:
resolve: {
alias: {
sha3: path.join(__dirname,'node_modules/sha3/build/Release/sha3.node')
},
},
module: {
rules: [
{test: /\.node$/, use: 'node-loader'},
]
},
这样我告诉它哪个文件要导入,何时无法解析sha3
。并在.node
文件中包含node-loader
包!
答
尝试。然后,你可以:
1)定义装载机在你的WebPack配置:
module.exports = {
target: 'node',
entry: "./<lib>.js",
devtool: "source-map",
node: {
__dirname: false,
__filename: false,
},
output: {
path: "./dist",
filename: "<lib>.min.js"
},
plugins: [
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
})
],
module: {
loaders: [
{ test: /sha3$/, loader: 'binary' }
]
}
}
2)直接在进口使用装载机:
require('binary!sha3');
看起来很有前途! –
获取'配置有一个未知属性'loader'? –
哎呀,对不起,这应该是在模块对象中,当我看到module.exports时我觉得有点困惑。编辑! –