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

部署Node.js React应用至Heroku时构建无限期停滞求助

露营应用Heroku部署构建超时问题解决

问题根源

从构建日志可以明确看到,你的build脚本配置错误:

"build": "concurrently \"npm run start-fe\" \"npm run start-be\""

其中start-fe对应的react-scripts start是启动React开发服务器的命令,该命令会持续运行(用于本地开发热重载),不会自动退出。而Heroku的构建阶段要求任务执行完成后进程必须终止,因此这个命令导致构建过程无限期停滞,最终触发超时。

解决方案

1. 修改package.json脚本配置

将build脚本改为仅构建React生产静态文件,把后端服务启动逻辑放到start脚本(Heroku部署完成后会自动执行npm start启动应用):

"scripts": {
  "start": "node ./backend/server.js",
  "build": "react-scripts build",
  "dev": "concurrently \"npm run start-fe\" \"npm run start-be\"", // 保留本地开发用的并发启动命令
  "test": "react-scripts test",
  "eject": "react-scripts eject",
  "start-fe": "react-scripts start",
  "start-be": "node ./backend/server.js"
}

2. 配置后端托管前端静态文件

React构建完成后会生成build目录,需要让Node.js后端服务能访问并托管这些静态资源。如果使用Express框架,在server.js中添加以下代码:

const path = require('path');
// 托管前端静态文件
app.use(express.static(path.join(__dirname, '../build')));

// 处理SPA路由,所有非API请求返回index.html
app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname, '../build/index.html'));
});

3. 修正生产环境配置

  • 在Heroku控制台设置生产环境密钥:
    heroku config:set SECRET_KEY=你的生产环境密钥
    
  • 确保后端数据库连接使用Heroku提供的DATABASE_URL环境变量,而非硬编码的开发地址。

重新部署

修改完成后提交代码并重新部署:

git add .
git commit -m "修复Heroku构建脚本"
git push heroku main

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:35:47