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

Heroku上Yarn测试无法连接后端代码问题求助

解决Heroku测试流水线中API服务无法连接的问题

我之前在Heroku测试流水线里也踩过类似的坑,本地跑的好好的命令到了Heroku就连不上API,结合你的配置和日志来看,主要是Heroku测试环境的进程管理机制和本地Linux不一样,加上固定sleep的不可靠性导致的,给你几个可行的解决方案:

1. 问题根源分析

  • Heroku的进程生命周期管理:本地用nohup把API服务丢后台没问题,但Heroku测试环境会跟踪所有由测试脚本启动的进程,当父shell进程执行到后续命令时,可能会把后台的API进程标记为“孤儿进程”并杀掉,导致集成测试时API已经不在运行了。
  • 固定sleep时间不可靠:本地10秒足够启动API,但Heroku测试环境的资源可能有波动,API启动时间可能更长,这时候sleep 10秒后服务还没就绪,自然连不上。

2. 具体解决方案

方案一:用就绪检查替代固定sleep

把固定的sleep 10换成循环检查API服务是否真正就绪的逻辑,比如检查API的健康检查端点。修改你的app.json测试脚本如下:

{
  "environments": {
    "test": {
      "addons": [
        { "plan": "mongolab:sandbox" }
      ],
      "scripts": {
        "test": "yarn test && (yarn test:start:api & API_PID=$!; until curl -s http://localhost:${PORT:-3000}/health; do sleep 1; done; yarn test:integration; kill $API_PID)"
      }
    }
  }
}

这里的关键点:

  • 启动API后记录它的进程ID(API_PID=$!)
  • 循环用curl检查健康端点,直到服务响应
  • 集成测试完成后主动杀掉API进程,避免Heroku检测到残留进程报错

方案二:确保API监听正确的地址

很多时候本地开发API默认监听localhost,但Heroku的容器环境里,服务需要监听0.0.0.0才能让同一容器内的测试进程访问到。检查你的API启动配置,确保监听地址是0.0.0.0,端口用Heroku提供的$PORT环境变量(或者你自定义的端口,但要保持测试脚本里的端口一致)。

方案三:用进程管理工具协调启动

如果你的项目里已经有类似concurrently或者wait-on的工具,可以用它们来更优雅地管理进程:

  1. 先安装依赖:yarn add -D wait-on concurrently
  2. 修改package.json里的脚本:
{
  "scripts": {
    "test:api:start": "yarn test:start:api",
    "test:integration:wait": "wait-on http://localhost:${PORT:-3000}/health && yarn test:integration",
    "test:full": "yarn test && concurrently -k -s first \"yarn test:api:start\" \"yarn test:integration:wait\""
  }
}
  1. 然后在app.json里把测试脚本改成:
{
  "environments": {
    "test": {
      "addons": [
        { "plan": "mongolab:sandbox" }
      ],
      "scripts": {
        "test": "yarn test:full"
      }
    }
  }
}

concurrently会同时启动API和等待脚本,-k参数会在其中一个进程结束时杀掉另一个,-s first会以第一个结束的进程的退出码作为整体的退出码,确保测试失败时能正确反馈给Heroku。

3. 额外排查点

  • 查看Heroku测试日志的完整输出,确认API服务是否真的启动了,有没有报错信息(比如端口被占用、数据库连接失败)
  • 检查MongoLab addon是否在测试环境正确配置,API服务能不能正常连接数据库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:27:56