vue2关于Node.js17及以上报digital envelope错误的解决办法

发布于:2025-05-01 ⋅ 阅读:(52) ⋅ 点赞:(0)

简介

digital envelope routines::unsupported错误‌通常发生在Node.js版本升级到17或更高版本后,因为这些版本开始使用OpenSSL 3.0,它对算法和密钥大小施加了更严格的限制‌。

错误原因

Node.js 17及以上版本开始使用OpenSSL 3.0,该版本对允许的算法和密钥大小增加了严格的限制。如果你的项目依赖于旧版本的加密算法或密钥大小,就会触发这个错误‌。

解决方案

设置环境变量

‌设置环境变量‌:可以通过设置环境变量NODE_OPTIONS来指定使用旧版OpenSSL提供程序。在Linux和Mac OS中,可以输入命令:

export NODE_OPTIONS=--openssl-legacy-provider;

在Windows中,可以输入命令:

set NODE_OPTIONS=--openssl-legacy-provider‌。

修改package.json

‌修改package.json‌:在package.json的scripts部分添加环境变量设置。
package.json

"scripts": {
    "dev": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
    "build": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build"
}

这样在运行npm run dev或npm run build时,环境变量会被正确设置‌

安装旧版本Node.js

‌安装旧版本的Node.js‌:如果上述方法不起作用,可以考虑安装旧版本的Node.js(如16.x或14.x)。可以使用nvm(Node Version Manager)来安装和管理多个Node.js版本。
安装并使用Node.js 16的命令如下:

nvm install 16
nvm use 16

更新依赖项

‌更新依赖项‌:确保所有依赖项都是最新的,或者单独更新有问题的依赖项。可以使用以下命令更新所有依赖项:

npm update

或者单独更新某个依赖项:

npm update <dependency-name>

更改加密设置

‌更改加密设置‌:如果上述方法都无法解决问题,可能需要更改项目的加密设置。这通常需要编辑项目的配置文件或代码,以使用与当前Node.js和OpenSSL版本兼容的加密算法。这需要较深的加密和Node.js内部工作知识‌。


网站公告

今日签到

点亮在社区的每一天
去签到