解决:Node.js 版本更新后与 OpenSSL 不兼容导致的npm报错“Error: error:0308010C:digital envelope routines::unsupported”
- 方法一:更改系统环境变量
- 方法二:更改项目环境变量
- 方法三:更换 Node.js 版本
- 方法四:升级依赖库
- 方法五:调整应用程序代码
方法一:更改系统环境变量
Windows 平台:在命令行中运行 $env:NODE_OPTIONS="--openssl-legacy-provider"
命令,然后重启即可。这种方式可以临时解决,但需要每次启动时都运行该命令。
方法二:更改项目环境变量
在 package.json 的 scripts 中新增SET NODE_OPTIONS=--openssl-legacy-provider
,这样在运行 npm run dev 时会自动设置环境变量。
方法三:更换 Node.js 版本
卸载当前 Node.js 环境,并安装 Node.js V17 或之前的版本,以避免 OpenSSL 3.0 带来的兼容性问题。或者使用nvm切换node版本。
方法四:升级依赖库
如果项目依赖于某些不再受支持的加密算法或库,考虑升级这些依赖库以获得更好的兼容性和安全性
方法五:调整应用程序代码
对于直接使用不支持的加密算法的应用程序代码,考虑调整代码以使用 OpenSSL 3.0 支持的算法