首个React项目执行npm start提示localhost拒绝连接如何解决
报错原因说明
你遇到的ERR_OSSL_EVP_UNSUPPORTED错误是Node.js版本和项目依赖的webpack版本兼容性问题导致的:你当前使用的是Node.js v17及以上版本,该版本默认启用了OpenSSL 3.0,旧版create-react-app内置的webpack依赖仍使用OpenSSL 1.0的加密算法,二者不兼容导致开发服务启动失败,所以浏览器访问localhost会提示拒绝连接。
可行解决方法
下面提供三种不同场景的解决方案,任选一种即可:
临时启动方案(无需修改项目配置)
根据你使用的系统和终端类型,执行对应命令启动项目即可:- 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
- Mac/Linux终端:
项目永久生效方案
打开项目根目录的package.json文件,找到scripts配置段,修改启动、构建等命令,添加OpenSSL兼容参数:// 修改前的配置 "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }// 修改后的配置 "scripts": { "start": "NODE_OPTIONS=--openssl-legacy-provider react-scripts start", "build": "NODE_OPTIONS=--openssl-legacy-provider react-scripts build", "test": "NODE_OPTIONS=--openssl-legacy-provider react-scripts test", "eject": "react-scripts eject" }修改保存后,正常执行
npm start即可启动项目。长期兼容方案
将本地Node.js版本降级到v16 LTS长期支持版,该版本和旧版create-react-app的兼容性最优,不会出现该类OpenSSL兼容问题。
内容的提问来源于stack exchange,提问作者Egor Ulybin
相关产品推荐
相关产品推荐

