目录
1、背景
为契合适用技术规范要求的前端脚手架,升级本地Node.js版本至v18.16.1,随后运行曾经正常运行的前端项目报错:Error: error:0308010C:digital envelope routines::unsupported
2、根因
在Node.js V17版本以后,采用的OpenSSL 3.01 库包,较之
OpenSSL 1.1.1 而言,对允许算法和密钥大小增加了严格的限制,因此会对此前的系统环境造成影响,需要重新编译
3、解决方案
1.打开终端,进行Node变量设置
Ⅰ、Linux & Mac OS (windows git bash)
export NODE_OPTIONS=--openssl-legacy-provider
Ⅱ、windows
set NODE_OPTIONS=--openssl-legacy-provider
2、修改本地环境的package.json文件,在相关构建命令之前加入
set NODE_OPTIONS=--openssl-legacy-provider &
例如:
"scripts": {
"build:test": "node script/build --env test",
"build:pro": "node script/build --env pro",
"build": "npm run build:pro",
"start": "set NODE_OPTIONS=--openssl-legacy-provider & npm run start:proxy",
3、卸载Node.js 17+,并重新安装低版本Node.js,然后重新编译、启动
OpenSSL_3.0_Wiki说明:OpenSSL_3.0_Wiki ↩︎