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

Node Express服务在Heroku staging正常但production偶发no such app错误

问题排查与解决方案

首先排除Heroku平台本身故障的可能

如果是Heroku平台故障,通常会出现全量请求失败、dyno无法启动等共性问题,不会出现同一路由偶发成功的现象,问题基本集中在应用启动配置、端口绑定或进程管理环节。

production环境需要调整的配置项

  • 修正端口绑定逻辑:Heroku会为每个web dyno动态分配唯一的监听端口,强制要求进程监听process.env.PORT环境变量对应的端口,你日志中硬编码监听12080属于错误配置。修改代码中端口监听逻辑为:
app.listen(process.env.PORT || 12080, () => {
  console.log(`Starting server in port ${process.env.PORT || 12080}`)
})

本地开发时会自动 fallback 到12080,部署到Heroku时会使用平台分配的动态端口。

  • 修正pm2启动配置:首先不要用pm2的后台守护模式启动应用,Heroku要求web进程必须在前台运行,否则平台会判定进程退出,触发dyno重启,导致服务不稳定。将npm start的启动命令从pm2 start xxx改为pm2-runtime xxx,pm2-runtime是专门为容器、PaaS平台设计的前台运行模式,符合Heroku的运行要求。
    其次不要配置pm2的多进程集群模式,Heroku单dyno只允许一个进程绑定监听端口,多进程模式会导致端口抢占,只有抢到端口的进程能正常处理请求,其他进程返回404,刚好符合你偶发成功的故障表现。
  • 核对production环境变量:登录Heroku后台进入production应用的设置页,核对Config Vars配置,确保所有staging环境有的必要配置项production都存在,尤其注意NODE_ENV等运行相关的变量是否和staging一致。
  • 检查dyno运行状态:进入production应用的资源页,查看web dyno的运行日志,确认是否存在频繁重启、进程崩溃的记录,如果有则根据错误日志进一步排查依赖缺失、资源不足等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:36:03