React项目执行npm start时遇digital envelope routines错误求助
错误根因
这个错误源于Node.js v17及以上版本默认启用OpenSSL 3.0的安全标准,而你的React项目依赖的旧版webpack(或react-scripts)仍在使用OpenSSL 3.0已弃用的哈希算法(如MD4),导致兼容性冲突。
解决建议
以下是几种不同场景的解决方案,按优先级推荐:
1. 升级依赖(根治方案)
react-scripts v5及以上版本已修复该兼容性问题,直接升级即可:
npm install react-scripts@latest
升级完成后重新运行npm start即可,无需额外配置。
2. 修改启动脚本(永久生效)
如果暂时无法升级依赖,可在package.json的scripts中添加环境变量,强制Node.js使用旧版OpenSSL算法:
{ "scripts": { "start": "NODE_OPTIONS=--openssl-legacy-provider react-scripts start", "build": "NODE_OPTIONS=--openssl-legacy-provider react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" } }
注意:Windows系统用户若上述写法报错,可替换为
set NODE_OPTIONS=--openssl-legacy-provider && react-scripts start
3. 临时启动(快速测试)
不想修改配置的话,可直接在终端中带环境变量启动项目:
- Mac/Linux:
NODE_OPTIONS=--openssl-legacy-provider npm start - Windows Cmd:
set NODE_OPTIONS=--openssl-legacy-provider && npm start - Windows PowerShell:
$env:NODE_OPTIONS="--openssl-legacy-provider"; npm start
4. 降级Node.js版本
如果上述方法都不适用,可将Node.js降级到v16.x及以下版本(该版本默认使用OpenSSL 1.1.1,无此兼容性问题)。推荐用nvm管理版本:
# 安装nvm(若未安装) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 安装v16.20.0稳定版 nvm install 16.20.0 # 切换到该版本 nvm use 16.20.0
内容的提问来源于stack exchange,提问作者Emma Bayley-Melendez
相关产品推荐
相关产品推荐

