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

如何排查Heroku部署Node.js Express应用时的启动崩溃问题?

解决Heroku部署Node.js应用启动崩溃(H10/R10错误)的问题

嘿,我仔细看了你的代码和Heroku日志,问题的关键已经很明显了——日志里显示App is running, server is listening on port undefined,这直接导致了H10崩溃和R10启动超时错误。下面分步骤帮你排查解决:

1. 修复代码的语法问题(最可能的根源)

你提供的app.js代码是连写在一行的,JavaScript需要用分号或换行分隔语句,这种写法会触发语法解析错误,导致port变量无法被正确赋值。请把代码调整为规范的结构:

const express = require('express');
const app = express();
const port = process.env.PORT || 5000;

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`);
});

拆分后每个变量和语句都会被正确解析,port会正常读取Heroku的动态端口,或者在本地环境 fallback 到5000。

2. 确认package.json配置正确

Heroku完全依赖package.json来管理应用启动和依赖安装,你需要确保:

  • scripts字段包含正确的启动命令:
    "scripts": {
      "start": "node app.js"
    }
    
  • express已添加到dependencies中(Heroku会自动安装这个依赖):
    "dependencies": {
      "express": "^4.18.2"
    }
    

如果本地还没安装express,先执行npm install express,再把package.json和package-lock.json一起提交到Git仓库。

3. 重新部署并验证

修复完成后,按以下步骤重新部署:

  • 提交代码:git add . && git commit -m "Fix syntax and port binding issue"
  • 推送到Heroku:git push heroku main
  • 实时查看日志确认状态:heroku logs --tail

如果一切正常,你会看到类似Example app listening on port 12345(12345是Heroku分配的随机端口)的日志,这时访问应用就不会再出现503错误了。

另外,日志里的R10错误是因为应用没有在60秒内绑定到指定端口,本质还是port为undefined导致的,修复端口问题后这个错误也会自动消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:42:31