如何将基于Node.js v16构建的React v17项目升级到Node.js v18?
解决Node.js v18启动React v17项目的ERR_OSSL_EVP_UNSUPPORTED错误
这个错误是因为Node.js v18默认启用了OpenSSL 3.0,旧版本的webpack和react-scripts依赖的哈希算法被OpenSSL 3.0弃用导致的。不用改动项目依赖,直接通过以下方法修复:
临时启动方案(每次启动前执行)
根据你的操作系统选择对应的命令:
- Windows(命令提示符cmd):
set NODE_OPTIONS=--openssl-legacy-provider && npm start - Windows(PowerShell):
$env:NODE_OPTIONS="--openssl-legacy-provider"; npm start - macOS/Linux:
NODE_OPTIONS=--openssl-legacy-provider npm start
永久修改方案(修改package.json,无需每次手动设置)
打开项目根目录的package.json文件,找到scripts字段,给start、build等命令添加环境变量:
Windows系统
修改后的scripts示例:
"scripts": { "start": "set NODE_OPTIONS=--openssl-legacy-provider && react-scripts start", "build": "set NODE_OPTIONS=--openssl-legacy-provider && react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }
macOS/Linux系统
修改后的scripts示例:
"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" }
修改完成后,直接执行npm start就能正常启动项目,全程无需改动任何依赖包。
内容的提问来源于stack exchange,提问作者Vader
相关产品推荐
相关产品推荐

