实战:排查构建失败
Claude Code 构建失败排查教程:构建失败不要马上乱改,先判断错误类型、定位相关文件,再做最小修复和复验。
直接复制
构建失败时,最容易犯的错是只复制最后一行。真正的根因经常在日志中间或第一处 error。
/debug 构建失败了,请帮我排查。 错误信息: 【粘贴完整错误】 要求: 1. 先判断错误类型,不要立刻修改。 2. 找到最可能相关的文件。 3. 给出最小修复方案。 4. 只修复和这次构建失败直接相关的问题。 5. 修复后重新执行必要检查并解释结果。 6. 如果是历史问题,请说明,不要顺手修复。
日志应该怎么给
尽量给 CC 这些信息:
- 执行了哪个构建动作。
- 完整错误日志,至少从第一处 error 开始。
- 当前修改了哪些文件。
- 本地失败还是 CI 失败。
- 之前是否能构建成功。
这是构建失败信息,请先只读分析。 执行动作: 【例如 npm run build / npm test / npm run lint】 失败位置: 【本地 / CI / 服务器】 最近改动: 【简单描述刚才改了什么】 完整错误: 【从第一处 error 开始粘贴】 请先分类,不要直接改。
常见错误类型
- 语法错误:括号、引号、导入导出、类型写错。
- 类型错误:字段不存在、类型不匹配、空值没处理。
- 依赖错误:包没安装、版本冲突、lock 文件不一致。
- 路径错误:文件名大小写、别名配置、移动文件后引用没改。
- 环境错误:Node 版本、环境变量、平台差异。
- 配置错误:构建工具、TS、ESLint、路由或打包配置。
可以让 CC 先按表格分类,避免一上来乱修:
| 类型 | 日志里常见信号 | 常见修复方向 |
|---|---|---|
| 语法错误 | Unexpected token、missing、parse error | 回到对应文件修语法 |
| 类型错误 | Property does not exist、not assignable | 修类型定义、空值判断、字段名 |
| 依赖错误 | Cannot find module、peer dependency | 确认依赖和 lock 文件 |
| 路径错误 | Module not found、case mismatch | 修导入路径和文件大小写 |
| 环境错误 | Node version、env missing | 确认版本和环境变量 |
| 配置错误 | config、plugin、loader | 查构建配置,不改业务代码 |
看 CC 有没有跑偏
- 有没有只看最后一行错误,而忽略前面的根因。
- 有没有把依赖版本、配置、代码错误混在一起。
- 有没有顺手升级依赖或重构项目。
- 有没有区分历史问题和本次修改问题。
修复前让它给判断
请先不要修改。 请输出: 1. 第一处真正错误在哪里。 2. 这个错误属于哪一类。 3. 最可能相关的文件。 4. 是否和本次修改有关。 5. 最小修复方案。 6. 如果需要运行检查,需要执行哪个最小命令。
如果日志很长,可以让 CC 先抽取关键段:
这段日志比较长,请先只做日志定位。 请找出: 1. 第一处 error。 2. 最相关的文件路径。 3. 最相关的错误行。 4. 后续错误是否可能只是连锁反应。 5. 暂时不要修改文件。
批准修复时怎么说
可以按最小方案修复构建失败。 限制: 1. 只修复当前构建错误。 2. 不要升级依赖,除非先说明没有替代方案。 3. 不要格式化无关文件。 4. 不要顺手修历史问题。 5. 修复后重新执行同一个检查并解释结果。
依赖相关错误要更谨慎:
如果你认为需要改依赖,请先不要改。 请说明: 1. 是否有不改依赖的修复方式。 2. 当前 lock 文件和 package 配置是否一致。 3. 升级、降级或新增依赖分别有什么风险。 4. 为什么这是最小必要方案。 5. 在我确认前不要修改依赖文件。
如果修了一个又冒出另一个
构建错误可能是串联的。第一处修完后,第二处才会暴露。让 CC 继续按“小步分类”的方式排查。
现在出现了新的构建错误,请继续按同样方式排查。 要求: 1. 判断这是新暴露的问题,还是刚才修复引入的问题。 2. 不要扩大到无关重构。 3. 继续只做最小修复。 4. 每修一次都重新运行同一个检查。
构建修复的完成标准
| 检查项 | 标准 |
|---|---|
| 原命令 | 同一个构建或检查命令通过 |
| 相关性 | 修复文件和错误日志能对应上 |
| 范围 | 没有升级依赖、格式化全项目或重构无关代码 |
| 解释 | 能说明第一处错误和修复原因 |
| 遗留 | 新错误、历史错误或环境限制讲清楚 |
最后可以追问:
请总结构建失败修复结果: 1. 第一处真正错误是什么。 2. 本次改了什么。 3. 原检查是否通过。 4. 是否还有历史问题或未验证项。 5. 是否可以继续提交前检查。
验收结果
- 你会把完整错误交给 CC。
- 你知道构建失败要先分类。
- 你知道修复范围必须最小。
- 你知道每修一步都要重新运行原检查。