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

将React应用从Heroku stack-18升级到stack-22时部署失败求助

解决Heroku Stack-22升级后的React部署错误

错误原因分析

从日志能明确两个核心问题:

  • node-sass版本不兼容:你使用的node-sass:4.x不支持Node.js 18,而Heroku-22默认安装Node 18.x版本
  • Python版本冲突:Heroku-22预装Python 3,但旧版node-gyp@3.8.0依赖Python 2的语法(比如无括号的print语句),导致编译失败

修复步骤

1. 替换或升级node-sass(优先推荐替换)

node-sass已停止维护,建议换成官方推荐的dart-sass:

  • 卸载node-sass:
    npm uninstall node-sass
    
  • 安装dart-sass:
    npm install sass --save
    

如果坚持使用node-sass,需升级到支持Node 18的最低版本node-sass@7.0.0,但仍不推荐,因为该项目已废弃。

2. 在package.json中指定兼容的Node.js版本

避免Heroku自动选择不兼容的Node版本,在package.json中添加engines字段:

{
  // ... 其他已有配置
  "engines": {
    "node": "16.x",
    "npm": "8.x"
  }
}

Node 16与你的React 17、react-scripts 4.x兼容性更好,也能避开Python语法冲突问题。

3. 可选:升级react-scripts到兼容版本

你的react-scripts:4.0.0版本较旧,升级到5.x可更好支持新Node版本和现代依赖:

npm install react-scripts@latest --save

验证修复

完成修改后先本地测试构建:

npm run build

确认构建成功后,再推送到Heroku:

git add .
git commit -m "fix: resolve Heroku stack-22 deployment errors"
git push heroku main

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:02:06