课程/前端到全栈

出错了怎么办

前面几篇,你学会了提需求、看代码、验收结果。但有一个情况你 100% 会遇到,而且很容易让人崩溃——报错

屏幕上跳出一大堆红色的英文,你一个字都看不懂。这时候别慌,这篇就是教你怎么和报错打交道

先认清一个事实:报错是常态

很多新手觉得"报错 = 我太笨 = 我不适合学编程"。这是天大的误解。

真相是:所有程序员,包括最厉害的高手,每天都在和报错打交道。 写代码的过程,本质就是"写出错 → 修好 → 又出错 → 又修好"的循环。AI 帮你写也一样,它也会写错。

所以遇到报错的第一步,不是怀疑自己,而是告诉自己:"正常,下一步是修它。"

报错长什么样

先别被一大堆红字吓到。任何报错,本质上都告诉你三件事:

1. 在哪一行出错(位置)
2. 出了什么错(类型)
3. 为什么出错(原因,有时给)

你不需要看懂所有英文,只要能找到这三个信息就行。看一个真实例子:

TypeError: Cannot read properties of undefined (reading 'map')
    at TodoList (app/todos/page.tsx:12:15)

拆开看:

  • 出了什么错TypeError(类型错误)
  • 具体什么问题Cannot read properties of undefined (reading 'map')——某个东西是 undefined,却对它用了 .map
  • 在哪一行app/todos/page.tsx 第 12 行第 15 列

哪怕你不懂英文,把这些原样复制给 AI,它也能精准告诉你怎么回事。

修错的标准流程

遇到报错,按这个流程走,几乎能解决所有问题:

第一步:别动,先复制完整报错

最常见的错误:看到报错就慌,要么瞎改代码,要么只截一段给 AI。

正确做法:把完整的报错信息复制下来,包括:

  • 红字内容
  • 报错下面的几行(叫"调用栈",标了出错位置)
  • 浏览器或终端里前后相关的信息

复制得越全,AI 判断越准。

第二步:连同相关代码一起给 AI

光给报错还不够,AI 还需要看"出错的代码"。给它两样:

  1. 报错信息(完整复制)
  2. 报错提到的那个文件的相关代码(特别是出错的那一行附近)

提问模板:

我这段代码报错了:

报错信息:(粘贴完整报错)

相关代码:(粘贴 app/todos/page.tsx 第 12 行附近的代码)

请告诉我为什么报错、怎么修。

第三步:让 AI 解释 + 给方案

AI 一般会给你两样东西:

  • 为什么会错(解释原因)
  • 怎么改(给修改方案)

这时候用上上一篇的"验收"能力:

  • 看它说的原因,是否合理
  • 按它说的改,跑一遍看还报不报错

第四步:改了还不对?给更多上下文

有时候改一次还没好,可能是因为 AI 缺信息。这时给它更多:

  • "我已经按你说的改了,现在报的是这个错:(新报错)"
  • "这是相关的另一个文件:(贴 db.ts 的代码)"
  • "这是我的项目结构:(说明用了什么技术、什么版本)"

信息越全,AI 越准。反复几次,几乎所有问题都能解决。

一个真实的排错案例

我们完整走一遍。假设你做了个待办清单,跑起来报这个错:

TypeError: Cannot read properties of undefined (reading 'map') at TodoList

第一步:复制报错,包括 at TodoList (app/todos/page.tsx:12)

第二步:贴代码给 AI

我的待办清单报错了,完整报错: TypeError: Cannot read properties of undefined (reading 'map') at TodoList (app/todos/page.tsx:12)

相关代码(第 10-15 行):

{todos.map((t) => (
  <li key={t.id}>{t.text}</li>
))}

为什么报错?怎么修?

第三步:AI 解释 + 方案

原因:todos 是 undefined(没值),对 undefined 用 .map 就会报这个错。 你需要确保 todos 有个默认的空数组。 修复:把 const todos = data.todos 改成 const todos = data.todos ?? []

第四步:按它说的改,跑一遍。好了。

整个过程你不用懂 .map 是什么、不用懂 ?? 怎么用——你只要会"复制报错 + 贴代码 + 按建议改 + 跑验证"

避免反复改不好:三个心法

有时候 AI 改一次、报一次,越改越乱。这时候记住三个心法:

心法一:小步验证

不要一次性让 AI 改 5 个地方然后跑——出错了不知道是哪个改动的锅。改一点,跑一下,确认没问题再改下一点。

心法二:给够上下文

AI 反复改不好,多半是信息不够。主动提供:

  • 项目用什么框架、什么版本
  • 相关的其他文件
  • 你最近做了什么改动
  • 你想要的整体效果

心法三:实在改不好,退回去

如果一段代码怎么改都不对,最务实的做法是:让 AI 重写这一段

"这段代码我改了好几次还有问题,能不能换个思路重新实现这个功能?"

退一步海阔天空。AI 不会嫌烦,让它重写比死磕一个烂摊子高效得多。

别害怕报错

最后说一句心态上的话:报错是你最好的老师

每一次报错、每一次修复,你都在积累经验。哪怕你不懂原理,多经历几次"出错→问 AI→修好"的循环,你也会慢慢建立起对代码的感觉。

高手不是不犯错,而是修得快。而你有了 AI 这个"24 小时家教",修复速度比传统学编程的人快十倍。

本篇小结

  • 报错是编程的常态,不是你笨
  • 任何报错都包含三个信息:在哪、什么错、为什么
  • 修错标准流程:复制完整报错 → 连同相关代码给 AI → 按 AI 建议改 → 跑验证
  • 改不好时:小步验证、给够上下文、不行就让 AI 重写
  • 每次报错都是学习机会,多经历几次就有感觉了

第 2 章总结

到这里,第 2 章就结束了。回顾一下你获得的"AI 编程能力包":

  1. 认识 Agent:知道 Agent 能动手干活,不只是动嘴
  2. 选对工具:了解 Cursor、ZCode 等主流工具的特点
  3. 会提需求:掌握四要素(目标/背景/约束/期望)和万能模板
  4. 会看代码:三层法看懂 + 跑起来验收
  5. 会修错:标准排错流程 + 三个心法

这套能力,是你接下来 14 章全程要用的"基本功"。下一章开始,我们就要正式进入开发——从搭建你的开发环境、创建第一个 Next.js 项目开始。带上你刚学会的"指挥 AI"的本领,我们开工。

💬 评论(0)

请登录后参与评论

加载中...