运行npm start启动React项目时报digital envelope routines不支持错误怎么办
错误原因
你遇到的ERR_OSSL_EVP_UNSUPPORTED报错是Node.js v17+版本的兼容性问题:该版本默认启用OpenSSL 3.0,而你项目依赖的旧版webpack使用的MD4哈希算法在OpenSSL 3.0中默认被禁用,导致构建流程中断,开发服务未正常启动,因此浏览器访问时会提示localhost拒绝连接。
解决方案
方案1:临时修改启动命令(无需调整依赖/Node版本)
打开项目根目录的package.json文件,修改scripts字段下的start配置,添加OpenSSL兼容参数:
👉 Mac/Linux环境修改为:"scripts": { "start": "NODE_OPTIONS=--openssl-legacy-provider react-scripts start" }👉 Windows cmd环境修改为:
"scripts": { "start": "set NODE_OPTIONS=--openssl-legacy-provider && react-scripts start" }👉 如需跨系统兼容,可先执行
npm i cross-env -D安装cross-env后修改为:"scripts": { "start": "cross-env NODE_OPTIONS=--openssl-legacy-provider react-scripts start" }修改完成后重新执行
npm start即可正常启动。方案2:升级项目依赖(推荐长期使用)
直接将项目中的react-scripts升级到5.0及以上版本,新版本已经适配Node.js 17+的OpenSSL规则,无需额外修改配置:npm install react-scripts@latest升级完成后重启项目即可。
方案3:降级Node.js版本
不想修改项目配置的话,可以将本地Node.js版本降级到v16.x LTS版本,该版本使用旧版OpenSSL,不会触发该兼容错误。
内容的提问来源于stack exchange,提问作者Egor Ulybin
相关产品推荐
相关产品推荐

