SC002 表示 runCheck() 收到的配置里没有启动命令。没有可启动的东西,所以运行在创建进程之前就结束了。
| 诊断码 | SC002 FAIL |
|---|---|
| 阶段 | 启动前 |
| CLI 退出码 | 1 |
| 含义 | 配置中没有用于启动服务的命令。 |
| 输出信息 |
|
| 首先检查 | 把 command 设为参数数组,例如 ["node", "server.js"]。 |
为什么只有 runCheck() 会出现这个诊断码?
CLI 和 checkShutdown() 会先校验输入。它们把空的 command 当作配置错误拒绝,在 runner 启动前就退出或抛出异常。runCheck() 接收的是已经校验过的 CheckConfig,所以手动构造的对象可能触发这个诊断码。
如何修复?
调用 runCheck() 之前,先用 parseConfig() 或 loadConfig() 校验输入:
import { parseConfig, runCheck } from "shutdown-check";
const config = parseConfig({
command: ["node", "dist/server.js"],
baseUrl: "http://127.0.0.1:3000",
readiness: { path: "/health" },
workload: { path: "/slow", started: { type: "response-headers" } },
});
const result = await runCheck(config);大多数脚本和测试改用 checkShutdown() 即可。它一步完成对象校验和检查。
如何确认已修复?
打印或查看解析后的配置,确认 command[0] 是可执行文件。下一次运行应该产生 process launched 事件。如果可执行文件或入口文件不对,结果会变成 SC101,捕获的 stderr 会说明原因。
不要为了消除 TypeScript 报错,把任意对象强制转换成 CheckConfig。这样只是去掉了类型错误,并没有加上运行时校验。