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

PERN栈应用部署后调用Heroku Postgres API返回503错误如何排查?

Heroku PERN栈GET请求503错误排查步骤

第一步:检查Heroku应用运行日志

503错误绝大多数是后端服务未正常启动导致,优先通过日志定位根因:

  • 本地安装Heroku CLI后运行 heroku logs --app 你的应用名 --tail 查看实时日志,发起GET请求时同步观察报错输出
  • 优先排查端口配置:Heroku不允许硬编码固定服务端口,必须监听process.env.PORT,正确示例为 app.listen(process.env.PORT || 本地开发端口, () => {}),硬编码端口会直接导致服务启动失败

第二步:验证Postgres配置有效性

按以下步骤排除数据库问题:

  • 确认已在Heroku应用后台安装Heroku Postgres插件
  • 运行 heroku config --app 你的应用名 确认存在DATABASE_URL环境变量,代码中禁止硬编码数据库连接信息,必须从环境变量读取该参数
  • 运行 heroku pg:psql --app 你的应用名 直接连接数据库实例,能正常进入命令行则说明数据库服务本身正常,执行\d检查待办表等业务表是否已创建,未运行数据库迁移脚本会导致表不存在触发服务报错
  • 检查数据库连接配置,Heroku Postgres要求开启ssl连接,pg连接配置必须添加ssl参数,示例:
const pool = new Pool({
  connectionString: process.env.DATABASE_URL,
  ssl: {
    rejectUnauthorized: false
  }
});

第三步:区分前后端问题

  • 直接通过curl或者Postman请求Heroku后端接口地址,例如curl https://你的应用名.herokuapp.com/todos,如果直接请求也返回503说明是后端问题,和前端无关
  • 如果直接请求接口正常,排查前端fetch代码:确认请求地址为Heroku后端域名,没有写成本地localhost地址,同时确认后端已配置cors中间件允许前端域名访问

常见踩坑点

  • package.json的start脚本必须使用生产环境启动命令,例如node server.js,不能使用nodemon等开发依赖的命令
  • 所有生产依赖(express、pg、cors等)必须放在dependencies字段下,不要放在devDependencies,Heroku部署时不会安装开发依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:30:01