创建React Portfolio项目时遭遇ERR_OSSL_EVP_UNSUPPORTED错误的技术咨询
解决Node.js 18环境下React项目启动时的
ERR_OSSL_EVP_UNSUPPORTED错误 嘿,这个问题我之前在Node.js 18环境跑旧版create-react-app项目时也踩过坑!本质是Node.js 18默认启用了更严格的OpenSSL算法规范,而你的react-scripts(依赖的webpack版本)还没适配这个变化,导致哈希生成时触发了不支持的算法错误。给你几个实用的解决办法,按需选择:
临时快速修复(适合测试)
直接在启动命令前添加环境变量,强制使用旧版OpenSSL算法:
- Linux/macOS 终端:
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
永久配置到项目(不用每次输命令)
修改项目根目录下的package.json,把启动、构建命令加上环境变量:
"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" }
Windows用户注意:如果上面的格式不生效,把start命令改成set NODE_OPTIONS=--openssl-legacy-provider && react-scripts start
长期最优解(推荐)
升级react-scripts到最新版本,新版已经适配了Node.js 18+的OpenSSL要求:
npm install react-scripts@latest
如果用yarn的话:
yarn add react-scripts@latest
升级完成后,直接用npm start就能正常启动项目,不需要额外配置环境变量了。
补充说明
Node.js 16及以后版本逐步淘汰了一些旧的OpenSSL哈希算法,Node.js 18更是默认禁用了这些算法。而旧版webpack(被react-scripts依赖)还在使用这些被禁用的算法来生成构建哈希,这就是你遇到这个错误的核心原因。升级依赖或者临时启用旧算法都能解决问题,优先推荐升级依赖哦。
内容的提问来源于stack exchange,提问作者Dharmarajsinh Mangrola
相关产品推荐
相关产品推荐

