如何复制旧React项目创建新项目并解决ERR_OSSL_EVP_UNSUPPORTED错误
不用重新运行create-react-app,复制旧项目创建新项目的方法及错误修复
一、正确复制旧React项目创建新项目的步骤
- 只复制旧项目里的核心文件:
src/目录、public/目录、package.json、package-lock.json(或yarn.lock),不要复制node_modules/和.git/目录(不需要旧项目Git历史的话) - 进入新项目文件夹,运行
npm install(或yarn install),lock文件会帮你安装和旧项目完全一致的依赖,本地有缓存的话直接调用,不会额外消耗带宽 - 如果需要全新的Git仓库,执行
git init初始化即可
二、解决ERR_OSSL_EVP_UNSUPPORTED错误
这个错误是Node.js v17+版本和旧版webpack/react-scripts不兼容导致的——Node.js v17默认启用了新的OpenSSL哈希算法,而旧版构建工具不支持该算法,以下三种解决办法:
方法1:临时启动时添加环境变量
根据你的终端类型选择对应命令:
- 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
方法2:修改package.json的启动脚本
直接在package.json的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用户把set替换成export即可
方法3:降级Node.js版本
用nvm(Node版本管理器)将Node.js版本降到v16或更低,就能避开这个兼容性问题。
内容的提问来源于stack exchange,提问作者ZIADSALAH.
相关产品推荐
相关产品推荐

