Node环境编译Angular应用出现ERR_OSSL_EVP_UNSUPPORTED错误如何解决
报错根因
你遇到的ERR_OSSL_EVP_UNSUPPORTED报错是Node 17+版本的常见兼容问题:Node 17及以上版本默认启用OpenSSL 3.0,移除了部分旧版哈希算法,而你下载的这个Angular项目依赖的Webpack版本较低,仍在调用已废弃的加密接口,因此触发报错。你本地其他项目可以正常运行,是因为这些项目的Angular版本更高,内置的Webpack已经适配了OpenSSL 3.0的新规则。
解决方案
方案1:临时设置环境变量(单次启动生效)
根据你使用的终端类型执行对应命令:
- Windows cmd终端:
先执行set NODE_OPTIONS=--openssl-legacy-provider,再执行ng serve --open启动项目 - Windows PowerShell终端:
先执行$env:NODE_OPTIONS="--openssl-legacy-provider",再执行ng serve --open启动项目 - Mac/Linux终端:
直接执行NODE_OPTIONS=--openssl-legacy-provider ng serve --open即可启动
方案2:修改项目启动脚本(当前项目永久生效)
打开项目根目录的package.json文件,找到scripts配置块下的start字段,修改为:
"scripts": { "start": "set NODE_OPTIONS=--openssl-legacy-provider && ng serve --open", // 其余原有脚本配置保持不变 }
修改后直接执行npm start即可正常启动,无需每次手动设置环境变量。如果需要兼容Mac/Linux系统,可以在set前加上cross-env(需提前执行npm i cross-env -D安装依赖)。
方案3:版本适配(长期通用解决方案)
- 升级当前项目的Angular版本至14及以上,对应依赖的Webpack版本会自动升级到适配OpenSSL 3.0的版本,可完美兼容Node 17+
- 也可使用nvm等Node版本管理工具,将当前环境的Node版本切换至16 LTS版本,运行旧版Angular项目不会触发该报错
内容的提问来源于stack exchange,提问作者Aman
相关产品推荐
相关产品推荐

