AWS EC2部署React+Node项目执行npm run build报0308010C错误如何解决?
问题根因
你遇到的ERR_OSSL_EVP_UNSUPPORTED错误是版本兼容性问题导致:Node.js 17及更高版本默认内置OpenSSL 3.0,移除了对旧版不安全哈希算法的支持,而你项目中依赖的低版本react-scripts(低于v5.0.0)配套的webpack 4仍然在调用已被弃用的算法,因此构建触发报错。
可选用的解决方法
方案1:临时添加环境变量(最快生效,无需修改依赖)
在执行构建命令前添加OpenSSL legacy provider的参数即可:
- Linux/macOS 环境直接执行:
NODE_OPTIONS=--openssl-legacy-provider npm run build
- Windows CMD环境执行:
set NODE_OPTIONS=--openssl-legacy-provider && npm run build
- Windows PowerShell环境执行:
$env:NODE_OPTIONS="--openssl-legacy-provider"; npm run build
如果要永久修改项目构建脚本,可以直接编辑client/package.json中的scripts配置:
"scripts": { "build": "NODE_OPTIONS=--openssl-legacy-provider react-scripts build" }
之后直接执行npm run build即可正常构建。
方案2:升级react-scripts到v5及以上版本(永久修复)
react-scripts v5.0.0开始已经适配了高版本Node.js的OpenSSL规则,升级依赖即可解决:
在client目录下执行:
npm install react-scripts@latest
如果出现peer依赖冲突,可以添加参数安装:
npm install react-scripts@latest --legacy-peer-deps
安装完成后重新执行npm run build即可。
方案3:降级Node.js到v16 LTS版本
Node.js 16 LTS版本使用的是旧版OpenSSL,不会触发该兼容性问题,如果你用nvm管理Node版本,直接执行:
nvm install 16 nvm use 16
切换版本后重新构建即可。
内容的提问来源于stack exchange,提问作者heyjay
相关产品推荐
相关产品推荐

