报错定位
列出可能性排序 + 每种怎么验证
我在 [技术栈与版本] 上遇到这个报错。[已尝试过的方法]。请:1)按可能性从高到低列出原因;2)每条给出验证方法(一条命令或一段最小复现代码);3)不要重复我已经试过的;4)如果信息不足以判断,直接告诉我需要补充什么。 ``` [粘贴报错与堆栈] ```
适合什么场景
- 报错能稳定复现、堆栈完整,但出错的那层框架或库你并不熟。
- 已经试过两三种改法都无效,需要有人帮你排除方向,而不是继续猜。
不适合的场景
- 错误只在线上偶发,日志里没有请求 id 和入参:先去补日志,否则只能拿到一份猜测清单。
- 其实是你刚改的那几行引起的:先 git diff 或 git bisect,比问模型快得多。
示例
输入
TypeError: Cannot read properties of undefined (reading 'map')
at OrderList (src/components/OrderList.tsx:42:31)
at renderWithHooks (react-dom.development.js:14985:18)
Next.js 13.4 / SWR 2.2 / Node 18
已试过:加 ?.、清 .next 缓存、重装 node_modules你会得到
把「接口 loading 或报错时 data 仍是 undefined,组件却直接 data.map」排在第一位,第二位是 SWR 没有 fallbackData、路由切换时 key 被复用,第三位才是接口返回空。每条配一个验证动作(第 42 行前打印 data、mock 一个 500 看是否仍崩),并跳过已试过的 `?.`。
常见误用
- 只贴最后一行错误信息,不贴堆栈和版本:它只能按最流行的框架版本猜,命中率看运气。
- 省略「已经试过什么」,于是它把你已经排除的方向又走一遍,一轮对话白费。
可以这样改
- 加「先只给三个最可能的原因和各自的验证命令,不要给修复代码」,先把范围缩小再动手,避免它顺着错误方向大改。
- 把「技术栈与版本」换成 `package.json` 或 `pip freeze` 的原文片段,能消掉大半版本相关的幻觉。