node.js - 使用 Webpack 捆绑 sha3/二进制模块

标签 node.js webpack sha

当我捆绑源代码时,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/

相关文章:

javascript - Npm包如何以编程方式运行脚本

javascript - webpack-dev-server npm run dev 抛出 TypeError : Cannot set property 'port' of undefined

vue.js - 如何从nuxt.js页头的node_modules文件夹中引用js文件

ubuntu - webpack-dev-server : ERROR in missing ) after argument list @ multi main

java - 将哈希函数从 php 重写为 java - 其他结果

node.js - 使用 Node js 调用 ORCID 公共(public) api

node.js - Google/Firebase 云功能的速率限制?

javascript - HtmlWebpackPlugin 忽略文件名

java - 更改 sha 256 更新的顺序更改值

PHP mysqli_connect : authentication method unknown to the client [caching_sha2_password]