Angular项目执行ng s启动时出现ERR_OSSL_EVP_UNSUPPORTED错误的持久解决方案咨询
Angular项目执行ng s启动时出现ERR_OSSL_EVP_UNSUPPORTED错误的持久解决方案咨询
我来帮你搞定这个每次启动都要手动输命令的麻烦问题!
首先,这个ERR_OSSL_EVP_UNSUPPORTED错误是因为Node.js v17及以上版本默认启用了新的OpenSSL算法,但你的Webpack版本暂时还不兼容这个新算法,所以需要指定使用旧的OpenSSL提供程序才能正常启动项目。
下面给你几个持久化的解决方案,选一个适合你的就行:
方案1:修改项目的package.json脚本(推荐,团队协作友好)
打开项目根目录的package.json文件,找到scripts里对应的启动命令(一般是start,对应ng s),把它修改成:
"scripts": { "start": "NODE_OPTIONS=--openssl-legacy-provider ng s", // 其他脚本... }
如果是Windows系统,需要用set命令来设置环境变量,改成下面这样:
"scripts": { "start": "set NODE_OPTIONS=--openssl-legacy-provider && ng s", // 其他脚本... }
之后你只要运行npm start,就会自动带上这个环境变量,不用每次手动输入命令了。
方案2:设置全局环境变量(个人所有项目生效)
如果你希望这个配置对自己电脑上的所有Node.js项目都生效,可以设置全局环境变量:
macOS/Linux:
打开终端,编辑你的shell配置文件(比如~/.zshrc、~/.bashrc或者~/.profile,根据你用的shell选择),添加一行:export NODE_OPTIONS=--openssl-legacy-provider保存后运行
source ~/.zshrc(对应你编辑的文件名),重启终端后配置就会自动生效。Windows:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「用户变量」区域点击「新建」,变量名填
NODE_OPTIONS,变量值填--openssl-legacy-provider - 点击确定保存,重启所有终端窗口后生效。
方案3:使用项目级的.npmrc文件
在项目根目录创建一个.npmrc文件,添加一行内容:
node-options=--openssl-legacy-provider
这样npm在运行任何脚本时都会自动读取这个配置,不用修改package.json也能生效。
备注:内容来源于stack exchange,提问作者Mohanad Gadallah
相关产品推荐
相关产品推荐

