与 webpack 捆绑后,NodeJS 加密模块无法在浏览器中工作
NodeJS crypto module not working in browser after bundling with webpack
当我在浏览器中查看我的代码时,我不断收到以下错误:
Uncaught TypeError: crypto.createHash is not a function
我试过在运行时使用 webpack 加载模块:
module.exports = {
target: "web",
mode: "production",
entry: "./dist/index.js",
output: { filename: "../dist/bundle.js" },
externals: { crypto: require("crypto") }, <=== here
};
并导入为:import * as crypto from "crypto"
,但这会导致上述相同的错误。
我意识到浏览器有自己的原生 crypto
API,因此也尝试将名称别名为 import * as crypt from "crypto"
等不同的名称,但这会导致相同的错误。
包含完整代码的存储库可用:https://www.github.com/lbragile/LibraCoin
Node.js 核心库 仅 在 node.js 环境中可用。所以,如果最后,您将 运行 您的代码在浏览器中,您 不能 使用节点核心库。
请注意,crypto 是一个核心库
据我所知,浏览器加密 API 完全不同。所以看看它的 docs
当我在浏览器中查看我的代码时,我不断收到以下错误:
Uncaught TypeError: crypto.createHash is not a function
我试过在运行时使用 webpack 加载模块:
module.exports = {
target: "web",
mode: "production",
entry: "./dist/index.js",
output: { filename: "../dist/bundle.js" },
externals: { crypto: require("crypto") }, <=== here
};
并导入为:import * as crypto from "crypto"
,但这会导致上述相同的错误。
我意识到浏览器有自己的原生 crypto
API,因此也尝试将名称别名为 import * as crypt from "crypto"
等不同的名称,但这会导致相同的错误。
包含完整代码的存储库可用:https://www.github.com/lbragile/LibraCoin
Node.js 核心库 仅 在 node.js 环境中可用。所以,如果最后,您将 运行 您的代码在浏览器中,您 不能 使用节点核心库。
请注意,crypto 是一个核心库
据我所知,浏览器加密 API 完全不同。所以看看它的 docs