当我打包我的源代码时,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 \ build \ Release \ sha3.lib和对象 \ node_modules \ sha3 \ build \ Release \ sha3.exp


我可以在我的项目中运行require('sha3'),但是webpack无法解决它。

我查看了docs here,有关webpack如何解析库。

有人可以指出我如何将sha3包含在捆绑包中。

我的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包!

10-07 18:39