nodejs升级后出现ERR_OSSL_EVP_UNSUPPORTED错误
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
解决方案
排查原因,是新版本的nodejs使用的openssl和旧版本不同,导致项目启动出错。
1 在启动脚本之前添加环境变量
set NODE_OPTIONS=--openssl-legacy-provider
可以单独执行,或者拼接在npm脚本中
"scripts": {
"start": "set NODE_OPTIONS=--openssl-legacy-provider && node scripts/start.js",
"buildwin": "set NODE_OPTIONS=--openssl-legacy-provider && node scripts/build.js",
"build": "node scripts/build.js",
"test": "node scripts/test.js"
},
2 添加全局环境变量
在系统环境变量中添加NODE_OPTIONS=--openssl-legacy-provider ,但是发现在vscode中总是获取不到。
所以需要在vscode内部添加环境变量。
打开设置,搜索env
找到 terminal.integrated.env.windows选项,添加环境变量。
"terminal.integrated.env.windows": {
"NODE_OPTIONS":"--openssl-legacy-provider"
}
重启控制台即可生效。