Shutdown Check

搜索文档

查找页面或章节

SC001:端口已被占用

SC001(端口已被占用)表示 shutdown-check 启动服务之前,配置的端口上已经有程序在响应。找出占用端口的进程,解决冲突。

SC001 表示启动前 baseUrl 中的端口已被占用。shutdown-check 无法把你的服务和已经在监听的进程区分开,所以直接停止。

诊断码SC001 FAIL
阶段启动前
CLI 退出码1
含义服务启动前,配置的端口上已经有程序在响应,检查无法把你的服务和它区分开。
输出信息
  • The local port at <origin> is already occupied or cannot be confirmed free; use a dedicated port
首先检查给测试分配一个专用端口,并停掉仍在监听该端口的开发服务器或之前未结束的运行。

为什么会出现?

  • 开发服务器还在运行。
  • 另一个测试使用了同一个端口。
  • 并行的 CI 任务共用同一个 baseUrl。
  • 配置的端口属于数据库、代理或服务容器。
  • 上一次运行留下了仍然存活的子进程。

如何修复?

  1. 停止占用该端口的进程。
  2. 给 shutdown-check 分配一个专供这个测试使用的端口。
  3. 通过 env 把同一个端口传给服务。
  4. 并行的测试使用不同的端口。
shutdown-check.json
{
  "env": { "PORT": "3510" },
  "baseUrl": "http://127.0.0.1:3510"
}

如果问题出现在上一个测试之后,检查是否有启动器退出时没有停掉自己的子服务器。这个问题本身会在更后面的阶段报告为 SC302。

如何确认已修复?

用同样的命令再运行一次。时间线的第一个事件现在应该是 process launched,而不是 check failed — SC001。如果之后服务没能进入就绪状态,继续按 SC100 或 SC101 排查;端口冲突本身已经解决了。

如果只在 CI 中失败,检查并行任务和服务容器。本地空闲的端口,在 runner 上仍可能被共用。