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

Heroku构建成功却遇Application Error,求排查提示

Heroku部署后Application Error(H20/R10/H10)排查思路

1. 先解决高频的R10(端口绑定超时)

  • 强制使用Heroku提供的动态端口,绝对不能硬编码固定端口,server.js里要这么写:
    const port = process.env.PORT || 3000;
    app.listen(port, () => {
      console.log(`Server running on port ${port}`);
    });
    
  • 检查Procfile的正确性:Web进程的启动命令必须准确,比如:
    web: node server.js
    
    注意路径、文件名不能写错,也不要有多余空格。如果没写Procfile,Heroku会默认用npm start,所以要确保package.json里的scripts.start指向正确的启动文件。

2. 排查H10(应用崩溃)

  • 拉取完整崩溃日志:执行heroku logs --tail实时跟踪启动过程,重点看崩溃前的报错信息——大概率是依赖缺失、代码语法错误、数据库连接失败或者环境变量没配置。
  • 本地模拟生产环境测试:设置NODE_ENV=production后运行npm start,排查本地和Heroku环境的差异。比如如果用到了devDependencies里的包,必须移到dependencies,因为Heroku默认不会安装开发依赖。
  • 确认package.json的engines字段指定了兼容的Node.js版本,比如:
    "engines": {
      "node": "18.x"
    }
    
    避免Heroku自动使用的Node版本和你的代码不兼容。

3. 处理H20(启动超时)

  • 检查启动阶段的耗时操作:比如同步执行数据库迁移、加载大文件、调用外部API且无超时限制,这些都会让Heroku判定启动超时。建议把这类操作改成异步,或者放到服务启动后的初始化逻辑里。
  • 确保服务启动后能快速响应健康检查:Heroku启动后会尝试访问你的服务,如果长时间无响应会触发H20,所以要保证启动逻辑简洁,优先让服务监听端口。

4. 验证Dynos计划变更的影响

  • 查看当前Dynos配置:执行heroku ps,确认Web Dyno的类型(免费/标准/性能)。如果是从高规格降到免费Dyno,可能因为内存/CPU不足导致启动失败或崩溃,可以临时升级到标准Dyno测试是否解决问题。
  • 免费Dyno有休眠机制,长时间未访问后首次启动会变慢,但如果频繁出现超时,基本就是资源不够的问题。

额外检查

  • 确认所有必要环境变量已配置:执行heroku config,检查数据库URL、API密钥等关键变量是否存在,缺失环境变量是常见的崩溃原因。

内容的提问来源于stack exchange,提问作者L ' Labradon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:55:19