Node中REPL内globalThis.crypto可用,脚本文件中返回undefined的原因
问题原因
- Node.js的REPL交互式环境为了提升操作便利性,会自动预加载
webcrypto相关模块,所以你在REPL里直接访问globalThis.crypto能正常返回对象。 - 但在普通脚本文件执行场景下,Node.js不会自动预加载该模块,因此默认状态下
globalThis.crypto的值是undefined。
解决办法
有两种可行方案:
显式导入并使用webcrypto
直接从node:crypto模块中导出webcrypto,可以选择挂载到globalThis或者直接使用:// file.js // 方式1:挂载到globalThis const { webcrypto } = require('node:crypto'); globalThis.crypto = webcrypto; console.log(globalThis.crypto); // 方式2:直接使用webcrypto const { webcrypto } = require('node:crypto'); console.log(webcrypto);启用实验性全局webcrypto参数
从Node.js 19版本开始,提供了实验性的全局webcrypto支持,启动脚本时添加--experimental-global-webcrypto参数,即可让globalThis.crypto自动可用:node --experimental-global-webcrypto file.js注意:该参数属于实验性功能,后续版本可能存在变动,生产环境使用需谨慎。
内容的提问来源于stack exchange,提问作者Alek
相关产品推荐
相关产品推荐

