Error: error:0308010C:digital envelope routines::unsupported 是 Node.js 中与 加密模块(OpenSSL) 相关的常见问题,通常出现在 Node.js v17+ 版本中
引起错误的原因:
Node.js 从 v17.x 开始默认使用 OpenSSL 3.0,而旧版(如 OpenSSL 1.1.x)的一些加密算法和 API 被标记为“遗留”(legacy)。
许多旧版前端工具(如 webpack 4、vue-cli)或项目依赖的库可能使用了这些废弃算法,导致运行时报错。 如果你的项目依赖以下内容,可能会报错:
旧版加密算法(如 md4、rc4)。
某些前端工具链(如 webpack 4、vue-cli 等)使用的旧版 SSL 配置。
企业内网的自签名证书(未适配 OpenSSL 3.0)。
解决方法如下:
临时设置环境变量(推荐快速修复)
在运行命令前添加环境变量,强制 Node.js 使用旧版 OpenSSL ,注意每次需要重新执行以下命令
通过设置--openssl-legacy-provider参数,强制 Node.js 使用旧版 OpenSSL 1.1.x 的加密提供程序,以兼容遗留代码。在运行命令前添加环境变量,强制 Node.js 使用旧版 OpenSSL 提供程序:
# Mac/Linux
export NODE_OPTIONS=--openssl-legacy-provider
# Windows(CMD/PowerShell)
set NODE_OPTIONS=--openssl-legacy-provider
然后重新运行命令(如 npm run dev)。
————————————————
原文链接:https://blog.youkuaiyun.com/ds_sylvia/article/details/148168421