问题排查
学习目标:学会排查和修复 AI 生成代码中的问题
预计时间:30-45 分钟
难度:⭐⭐⭐
AI 代码出问题的常见原因
AI 生成的代码出 bug,通常是这几个原因:
| 原因 | 表现 | 频率 |
|---|---|---|
| API 版本过时 | 方法不存在、参数不对 | 很常见 |
| 上下文丢失 | 变量未定义、导入缺失 | 常见 |
| 逻辑错误 | 功能不符合预期 | 常见 |
| 类型错误 | TypeScript 报错 | 常见 |
| 异步处理不当 | Promise 相关错误 | 较常见 |
排查流程
第一步:看错误信息
错误信息是最重要的线索。完整复制,包括:
- 错误类型
- 错误描述
- 堆栈信息(哪个文件、哪一行)
第二步:定位问题代码
根据堆栈信息找到出错的位置。看看那几行代码在干什么。
第三步:分析原因
常见的分析方向:
- 这个变量/函数从哪来的?有没有正确导入?
- 这个 API 的用法对不对?查一下文档
- 数据的类型对不对?打印出来看看
第四步:让 AI 修复
把信息整理好,发给 AI:
运行时报错:
[完整错误信息]
出错的代码(第 XX 行附近):
[相关代码]
我分析可能是 [你的猜测],请帮我修复。常见问题及解决方案
问题一:模块/方法不存在
错误示例:
TypeError: xxx is not a function
Module not found: Can't resolve 'xxx'原因: AI 用了过时的 API 或者不存在的包
解决:
这个错误说 [方法名] 不存在。
请查一下 [库名] 的最新文档,用正确的 API 重写这段代码。
我用的版本是 [版本号]。问题二:类型不匹配
错误示例:
Type 'string' is not assignable to type 'number'
Property 'xxx' does not exist on type 'yyy'原因: AI 搞混了数据类型
解决:
TypeScript 报类型错误:
[错误信息]
这是相关的类型定义:
[类型代码]
请修复类型问题。问题三:异步问题
错误示例:
Unhandled Promise rejection
Cannot read property of undefined (异步数据还没返回)原因: 没有正确处理 Promise
解决:
这段代码有异步问题,数据还没返回就被使用了。
请用 async/await 重写,并添加 loading 状态处理。
[相关代码]问题四:依赖缺失
错误示例:
xxx is not defined
Cannot find module 'xxx'原因: AI 忘了导入依赖
解决:
代码里用了 [变量/模块名],但没有导入。
请添加必要的 import 语句。调试技巧
技巧一:加日志
让 AI 在关键位置加 console.log:
这段代码运行结果不对,请在关键位置添加 console.log,
帮我追踪数据的变化过程。技巧二:简化问题
把复杂的代码拆成小块,逐个测试:
这个函数太复杂了,出了问题不好定位。
请把它拆成几个小函数,每个函数只做一件事。技巧三:对比工作版本
如果之前能跑,现在不能跑:
bash
git diff HEAD~1 # 看看改了什么然后告诉 AI:
这段代码之前能跑,改了 [xxx] 之后就报错了。
请对比一下,找出问题。什么时候该放弃让 AI 修
有些问题 AI 修不好,越修越乱。这时候:
- 回滚代码:
git checkout -- . - 换个思路:重新描述需求,让 AI 从头写
- 自己动手:有些问题人修比 AI 快
- 查文档:AI 的知识可能过时了
预防问题
写代码时
- 让 AI 生成代码后,先看一遍再运行
- 复杂功能分步实现,每步都测试
- 用 TypeScript,让类型系统帮你检查
选工具时
- 用最新版本的 AI 工具
- 告诉 AI 你用的框架版本
- 遇到版本问题,直接贴官方文档链接
本章小结
- 错误信息是最重要的线索,要完整复制
- 常见问题:API 过时、类型错误、异步问题、依赖缺失
- 给 AI 的信息越完整,修复越准确
- AI 修不好的问题,回滚重来或者自己动手
- 预防比修复更重要
模块总结
恭喜你完成了 AI 编程实战模块!
回顾一下学到的内容:
- 选择合适的 AI 编程工具
- 不同项目类型的开发策略
- AI 辅助开发的完整流程
- 三个实战项目的开发经验
- 最佳实践和问题排查
下一步建议:
- 选一个实战项目,从头做一遍
- 记录开发过程中的提示词和问题
- 总结自己的 AI 编程工作流