node.js - 类型错误:crypto__WEBPACK_IMPORTED_MODULE_5__.generateKeyPairSync 不是函数
问题描述
我安装了 Node.js v12.13.0,但仍然出现以下错误。我已经检查了很多关于此的问题,但所有问题的解决方案都是更新的节点版本。
Uncaught TypeError: crypto__WEBPACK_IMPORTED_MODULE_5__.generateKeyPairSync is not a function
at Login.render (Login.jsx:31)
at finishClassComponent (react-dom.development.js:17098)
at updateClassComponent (react-dom.development.js:17051)
at beginWork (react-dom.development.js:18513)
at HTMLUnknownElement.callCallback (react-dom.development.js:189)
at Object.invokeGuardedCallbackDev (react-dom.development.js:238)
at invokeGuardedCallback (react-dom.development.js:291)
at beginWork$1 (react-dom.development.js:23055)
at performUnitOfWork (react-dom.development.js:22022)
at workLoopSync (react-dom.development.js:21995)
at performSyncWorkOnRoot (react-dom.development.js:21613)
at scheduleUpdateOnFiber (react-dom.development.js:21045)
at updateContainer (react-dom.development.js:24194)
at react-dom.development.js:24577
at unbatchedUpdates (react-dom.development.js:21763)
at legacyRenderSubtreeIntoContainer (react-dom.development.js:24576)
at Object.render (react-dom.development.js:24659)
at Module../src/index.js (index.js:27)
at __webpack_require__ (bootstrap:781)
at fn (bootstrap:149)
at Object.1 (PlayerStore.jsx:21)
at __webpack_require__ (bootstrap:781)
at checkDeferredModules (bootstrap:45)
at Array.webpackJsonpCallback [as push] (bootstrap:32)
at main.chunk.js:1
解决方案
从堆栈跟踪来看,这段代码似乎正在浏览器中运行。该crypto.generateKeyPairSync
API 仅在 Node.js 中可用。基本上,它只能在服务器端使用,不能在前端使用。
你需要像Web Crypto API这样的东西,内置在现代浏览器中。这是一个示例 RSA 密钥对生成:
let keyPair = window.crypto.subtle.generateKey(
{
name: "RSA-OAEP",
modulusLength: 4096,
publicExponent: new Uint8Array([1, 0, 1]),
hash: "SHA-256"
},
true,
["encrypt", "decrypt"]
);
推荐阅读
- bootstrap-4 - Boostrap 4 多选
- git - git操作顺序
- javascript - 如何使用 React.createRef() 在 React 中访问多个 Dom 元素
- iot - CoAP pub/sub 传输可靠性
- javascript - 将 Vue.js Firebase-Object 包装到 onAuthStateChanged 处理程序中?
- javascript - 我的功能存在问题,我似乎无法修复。目前,它说Cannot read property 'split' of undefined at joinslots
- python - 'aiohttp.ClientSession' 缓存不起作用
- email - 如何使用 ThingsBoard 规则链中的“发送电子邮件”规则节点发送 Gmail 电子邮件?
- html - 以角度将数据从父组件传递到子组件
- css - 如何使用 max 函数调整 CSS 网格行高?