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

Heroku提示端口未绑定,代码与公开解决方案一致无法排查问题

问题原因及解决方案

核心错误点

你代码中端口赋值的运算符使用错误:
你当前写的是单竖线的按位或运算符:

const PORT = process.env.PORT | 5000;

按位或会对左右两侧的值做二进制位运算,而非你预期的「当环境变量PORT不存在时使用5000作为兜底端口」的逻辑。Heroku会为每个应用动态分配端口,这行代码会将Heroku分配的合法端口通过位运算修改为完全不相关的数值,导致你实际监听的端口和Heroku要求绑定的端口不一致,自然触发60秒未绑定端口的报错。

修复方案

将端口赋值的运算符替换为逻辑或||或者更稳妥的空值合并运算符??即可:

// 方案1:逻辑或,兼容性好
const PORT = process.env.PORT || 5000;
// 方案2:空值合并,仅当左侧为null/undefined时使用兜底值,避免合法的0值被覆盖
const PORT = process.env.PORT ?? 5000;

可选优化项

如果修改运算符后仍存在问题,可以移除app.listen中手动指定的0.0.0.0参数,Heroku环境会自动处理监听地址的配置:

app.listen(PORT, function() {
  console.log('Server started...');
});

其他排查点

  • 确认项目根目录没有错误配置的Procfile文件,如果存在Procfile,内容应当为web: npm start,不要写死端口
  • 确认部署的分支是你修改代码的分支,避免本地修改未提交到部署分支的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:36:02