当我捆绑源代码时,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 文件。
Creating library <proj>\node_modules\sha3\build\Release\sha3.lib and object <proj>\node_modules\sha3\build\Release\sha3.exp
我可以在我的项目中运行 require('sha3')
,但 webpack 无法解析它。
我查看了 docs here ,关于 webpack 如何解析库。
有人可以告诉我如何将 sha3 包含在我的 bundle 中吗?
我的 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')
})
]
}
最佳答案
最终对我有用的是:
resolve: {
alias: {
sha3: path.join(__dirname,'node_modules/sha3/build/Release/sha3.node')
},
},
module: {
rules: [
{test: /\.node$/, use: 'node-loader'},
]
},
这样,当它无法解析 sha3
时,我就告诉它要导入哪个文件。还有node-loader
包在 .node
文件中!
关于node.js - 使用 Webpack 捆绑 sha3/二进制模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42237018/