运行React18应用时出现digital envelope error错误求助
解决React应用启动时出现的
error:0308010C:digital envelope routines::unsupported错误 这个错误是因为你的Node.js版本(17及以上)默认使用OpenSSL 3.0的哈希算法,而旧版react-scripts(你用的是2.1.3)依赖的Webpack 4不支持该算法导致的,以下是三种可行解决方案:
方案一:临时修改启动脚本(最快生效)
在dev脚本中添加NODE_OPTIONS=--openssl-legacy-provider参数,强制使用旧版哈希算法:
"scripts": { "dev": "export REACT_APP_ENV=DEVELOPMENT PORT=7011 NODE_OPTIONS=--openssl-legacy-provider && react-scripts start" }
如果是Windows系统(使用cmd命令行),将export替换为set:
"scripts": { "dev": "set REACT_APP_ENV=DEVELOPMENT && set PORT=7011 && set NODE_OPTIONS=--openssl-legacy-provider && react-scripts start" }
方案二:升级react-scripts到兼容版本
你的react-scripts版本过旧,直接升级到支持React 18和Node.js 17+的5.x版本:
- 卸载旧版本:
npm uninstall react-scripts
- 安装最新稳定版:
npm install react-scripts@latest
- 重新启动应用:
npm run dev
注意:升级后如果使用了react-app-rewired,需要确认其版本是否兼容新版react-scripts,或考虑改用craco替代。
方案三:降级Node.js版本
将Node.js降级到16.x或更低版本(这些版本默认使用OpenSSL 1.1.1,不会触发该错误),可以用nvm(Node版本管理器)操作:
- 安装nvm后,执行以下命令切换版本:
nvm install 16 nvm use 16
- 重新启动应用:
npm run dev
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

