You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启动React应用时出现ERR_OSSL_EVP_UNSUPPORTED错误求助

解决Node.js 18下React应用启动的ERR_OSSL_EVP_UNSUPPORTED错误

以下是针对你遇到的启动错误的几种解决方法,按优先级排序:

1. 临时启动(快速验证)

直接在终端添加环境变量后启动,适用于临时测试:

  • Windows CMD:
set NODE_OPTIONS=--openssl-legacy-provider && craco start
  • Windows PowerShell:
$env:NODE_OPTIONS="--openssl-legacy-provider"; craco start
  • Linux/macOS:
NODE_OPTIONS=--openssl-legacy-provider craco start

2. 修改启动脚本(长期便捷方案)

修改package.json里的启动命令,以后直接运行npm start即可:
打开项目根目录的package.json,找到scripts字段下的start,替换为对应平台的命令:

  • Windows平台:
"start": "set NODE_OPTIONS=--openssl-legacy-provider && craco start"
  • Linux/macOS平台:
"start": "NODE_OPTIONS=--openssl-legacy-provider craco start"

如果需要跨平台兼容,先安装cross-env依赖:

npm install cross-env --save-dev

再修改脚本:

"start": "cross-env NODE_OPTIONS=--openssl-legacy-provider craco start"

3. 升级依赖(彻底解决推荐)

你的项目依赖的react-scripts和craco版本较旧,与Node.js 18的OpenSSL 3.0不兼容,升级到最新版可以从根源解决问题:

npm install react-scripts@latest craco@latest --save

升级后可能需要处理少量依赖兼容问题,但这是最规范的长期解决方案。

4. 降级Node.js版本

如果不想修改依赖,可将Node.js降级到14.x或16.x LTS版本,推荐用nvm(Node版本管理器)来快速切换版本。


错误原因说明

Node.js 16及以上版本默认启用OpenSSL 3.0,废弃了部分旧哈希算法,而你项目中的webpack、react-scripts等工具版本未适配该变化,导致启动时触发ERR_OSSL_EVP_UNSUPPORTED错误。添加--openssl-legacy-provider参数可让Node.js兼容旧算法。

附带处理npm install的警告

  • eslint peer依赖缺失:执行npm install @typescript-eslint/eslint-plugin@^3.6.1 --save-dev安装对应依赖
  • fsevents警告:该依赖仅适用于macOS,Windows下跳过是正常现象,无需处理
  • 漏洞问题:升级依赖后运行npm audit fix可修复大部分安全漏洞

内容的提问来源于stack exchange,提问作者NPashofff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 02:29:51