Mac环境React项目npm start报错ERR_OSSL_EVP_UNSUPPORTED localhost拒绝连接
问题根因
报错ERR_OSSL_EVP_UNSUPPORTED(对应错误码error:0308010C:digital envelope routines::unsupported)是Node.js 17及以上版本与旧版React项目依赖不兼容导致的。
Node 17+版本内置OpenSSL 3.0,移除了webpack 4(react-scripts 5.0以下版本默认依赖webpack 4)使用的MD4哈希算法,直接导致构建流程中断,开发服务并未成功启动,因此无论访问localhost还是127.0.0.1都会提示连接拒绝,和host配置无关。
可用解决方法
- 临时单次修复:在当前终端窗口先执行命令设置环境变量,开启旧版OpenSSL兼容模式:
之后再执行export NODE_OPTIONS=--openssl-legacy-providernpm start即可正常启动项目。 - 项目配置固定:如果不想每次启动前手动设置环境变量,可以直接修改项目根目录下
package.json文件内的启动脚本,将scripts字段下的start配置修改为:
修改保存后,后续直接执行"start": "NODE_OPTIONS=--openssl-legacy-provider react-scripts start"npm start即可自动带上兼容参数,无需额外操作。 - 依赖升级适配(推荐):将项目中的
react-scripts依赖升级到5.0.0及以上版本,新版依赖已经完成OpenSSL 3.0适配,不需要额外加兼容参数。在项目目录执行以下命令完成升级:
升级完成后重新执行npm install react-scripts@latestnpm start即可正常启动。 - Node版本切换:如果不想修改项目依赖,可以将本地Node.js版本切换到16.x LTS长期支持版,该版本内置OpenSSL 1.1.1,不存在该兼容问题。如果本地安装了nvm版本管理工具,直接执行以下命令即可切换:
切换版本后重新安装项目依赖,再执行启动命令即可。nvm install 16 nvm use 16
内容的提问来源于stack exchange,提问作者Wesley McGhee
相关产品推荐
相关产品推荐

