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

升级至Node 18.15.0(LTS)遇报错,寻求生产环境适用的解决方案

解决Node 18.x下react-scripts启动报错error:0308010C:digital envelope routines::unsupported的方案

错误原因

Node.js 17及以上版本默认启用OpenSSL 3.0,而你使用的react-scripts@4.0.3依赖的Webpack 4等工具仍依赖OpenSSL 1.1.1中的加密算法,两者兼容性冲突导致了该报错。

关于--openssl-legacy-provider的说明

这个参数是让Node.js启用旧版OpenSSL提供的加密算法集合,确实能临时绕过兼容性问题,但不建议长期用于生产环境——旧算法可能存在已公开的安全漏洞,会带来潜在风险。

推荐解决方案

1. 升级react-scripts到兼容版本(优先选择)

react-scripts@5.x已经适配了Node.js 17+的OpenSSL 3.0,这是最安全、可持续的解决办法,且你的react@17.0.2和该版本完全兼容,无需升级React本身:

  • 卸载旧版react-scripts:
    npm uninstall react-scripts
    
  • 安装最新版react-scripts:
    npm install react-scripts@latest
    

升级后直接执行react-scripts start即可正常启动,生产环境也能安全使用。

2. 临时过渡方案(仅用于短期调试或无法升级的场景)

如果暂时无法升级react-scripts,可以通过设置环境变量的方式全局启用旧版加密算法,比直接在命令后加参数更统一:
修改package.json中的scripts字段:

{
  "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"
  }
}

但再次强调:这个方案只是临时绕过,生产环境尽量不用,后续还是要优先升级react-scripts。

3. 不推荐的方案:降级Node.js

虽然降级到Node 16.x也能解决问题,但Node 16的安全支持即将终止,长期使用会暴露在安全风险中,因此不建议采用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:38:16