2023-04-05 如何解决 error:0308010C:digital envelope routines::unsupported 问题
参考文章:
由 nodejs 升级引起的构建错误:0308010C:digital envelope routines::unsupported - 掘金 (juejin.cn)
最近把 Node.js 的版本升级到了 v18,结果在运行项目的时候遇到了问题,现记录一下这个问题的解决办法。
1 | 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"
。
这应该就可以了。但是,如果这不能修复错误,那么就进行下一个修复。在许多情况下,它是有效的。
也可以直接设置环境变量。
1 | # Windows 下设置 |
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://blog.cmyr.ltd/archives/1d98f189.html
版权声明:转载请注明出处!