参考文章:
由 nodejs 升级引起的构建错误:0308010C:digital envelope routines::unsupported – 掘金 (juejin.cn)
https://www.freecodecamp.org/chinese/news/error-error-0308010c-digital-envelope-routines-unsupported-node-error-solved/
最近把 Node.js 的版本升级到了 v18,结果在运行项目的时候遇到了问题,现记录一下这个问题的解决办法。
Error: error:0308010C:digital envelope routines::unsupported
查找问题
遇事不决,先问下 New Bing:
这个错误通常是由于使用了不支持的加密算法或者使用了不支持的 OpenSSL 版本导致的。你可以尝试以下几种方法解决这个问题:
- 升级 Node.js 到最新版本。
- 升级 OpenSSL 到最新版本。
- 使用支持的加密算法。
如果你使用的是 Node.js 和命令行界面解决方案,如 Webpack、create-react-app 或 vue-cli-service,你可能已经遇到了这个错误。你可以参考这篇文章中的三种方式来解决这个错误。
解决问题
根据文章,有以下几种的解决办法:
1.将 –openssl-legacy-provider 传递给 Webpack 或 CLI 工具
例如,在 React 应用程序中,你可以将 --openssl-legacy-provider
传递给启动脚本,如 "react-scripts --openssl-legacy-provider start"
。
这应该就可以了。但是,如果这不能修复错误,那么就进行下一个修复。在许多情况下,它是有效的。
也可以直接设置环境变量。
# Windows 下设置
set NODE_OPTIONS=--openssl-legacy-provider
# Linux 或 macOS 下设置
export NODE_OPTIONS=--openssl-legacy-provider
# 借助第三方包 cross-env
cross-env NODE_OPTIONS=--openssl-legacy-provider
2.使用 Node JS 的 LTS 版本
考虑将你的 Node 版本降级到 16.16.0 或其他 LTS 版本。
目前,Node 的最新 LTS 版本是 18.12.1。你可以从 Node JS 官方网站下载它,或者使用 NVM 来安装它。
3.将 React 脚本升级到 5 以上版本
如果你正在使用 React,而这仍然无法为你解决错误,那么这很可能是你的 React 脚本的问题。
如果你使用的 React 脚本版本低于 5,那么你应该把它升级到 5+ 版本。
总结
这次的教训告诉我们,在升级 Node.js 版本的时候一定要小心谨慎,多加排查兼容性问题,以免在升级之后无法正常运行。
- 本文链接: https://wp.cmyr.ltd/archives/how-to-solve-error-0308010-cdigital-envelope-routines-unsupported
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
欢迎关注我的其它发布渠道
发表回复
要发表评论,您必须先登录。