文章目录
- 简介
- 错误原因
- 解决方案
- 设置环境变量
- 修改package.json
- 安装旧版本Node.js
- 更新依赖项
- 更改加密设置
简介
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内部工作知识。