Skip to main content

2.4 🔍 搜索与提问的元技能

这是全书最重要的一节。 学会搜索和提问,你就已经超过了 80% 的初学者。

为什么这么说?因为 AI 编程的核心不是「写代码」,而是「遇到问题 → 找到答案 → 解决问题」的循环。这个循环中,搜索和提问能力决定了你的效率。


🧠 核心心法

编程中没有你遇到过的「新」问题。 你遇到的 99% 的错误,Stack Overflow 上都有人问过,GitHub Issues 里都有人讨论过,AI 都能回答。

关键在于:你能不能把问题描述清楚。


1. 📋 怎么搜报错信息

实战演示

假设你运行 npm install 报了这个错:

npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! Found: react@18.2.0
npm ERR! node_modules/react
npm ERR! react@"^18.2.0" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps

错误做法 ❌:

搜索:npm 出错了怎么办

太模糊了,搜出来的结果跟你的问题无关。

正确做法 ✅:

搜索:npm ERR! ERESOLVE unable to resolve dependency tree

直接复制错误的关键信息,精确匹配。

搜索技巧

技巧1:复制错误的第一行或关键字
├── 好:npm ERR! ERESOLVE unable to resolve
├── 坏:npm 出错了

技巧2:加上技术栈名
├── 好:next.js build error Module not found
├── 坏:build 出错了

技巧3:加上版本号
├── 好:react 18 useEffect cleanup warning
├── 坏:useEffect 有警告

技巧4:排除无关结果
├── 好:python FileNotFoundError -site:csdn.net
└── 用减号排除不想看的网站

搜索引擎选择

引擎适合场景使用建议
Google英文技术问题首选,结果质量最高
Bing替代 Google国内可直接访问
百度中文社区内容搜 CSDN、掘金内容
GitHub Issues开源项目 bug直接去项目仓库搜
Stack Overflow经典编程问答看投票最高的回答

💡 小技巧:报错信息里有中文搜中文,有英文搜英文。英文搜索结果通常质量更高。


2. 🤖 怎么问 AI(ChatGPT / Claude / Copilot)

提问公式:上下文 + 问题 + 期望

对比示例

糟糕的提问 ❌:

我的代码报错了,帮我看看

AI 根本不知道你的代码是什么,怎么帮?

好的提问 ✅:

我在用 Next.js 14 + TypeScript 做一个待办事项应用。

在使用 Server Action 提交表单时,遇到了这个错误:

Error: Event handlers cannot be passed to Client Component props.

```

相关代码:

// app/page.tsx
export default function Home() {
async function handleSubmit(formData: FormData) {
'use server'
const title = formData.get('title')
await db.todos.create({ data: { title } })
}

return (
<form action={handleSubmit}>
<input name="title" />
<button type="submit">添加</button>
</form>
)
}

我期望:点击提交按钮后能把数据存到数据库。 我已经试过:把 'use server' 放在文件顶部,但还是一样的错误。

请问这个问题怎么解决?


### 提问模板(直接复制用)

**模板 1:报错求助**

我正在做 [项目描述],使用 [技术栈]。

运行 [什么命令] 时报错:

[粘贴完整错误信息]

相关代码:

[粘贴代码]

我试过 [你的尝试],但没有解决。 请问怎么修复?


**模板 2:功能实现**

我想实现 [功能描述]。

当前的技术栈是:[列出技术栈] 我的项目结构:[简单描述]

请给我:

  1. 实现思路
  2. 关键代码
  3. 需要注意的坑

**模板 3:代码审查**

请帮我审查以下代码:

[粘贴代码]

请从以下角度给建议:

  1. 有没有 bug?
  2. 性能有没有问题?
  3. 代码风格有没有改进空间?
  4. 有没有更好的实现方式?

**模板 4:学习路线**

我是 [你的背景],目前会 [你的技能]。

我想学 [目标],请给我一个 [时间] 的学习计划。

要求:

  • 每天能投入 [X] 小时
  • 偏好 [视频/文字/实战] 学习方式
  • 最终目标是 [具体目标]

---

## 3. 📖 怎么读英文文档

> 别怕英文文档。你不需要每个词都认识,只需要找到你需要的信息。

### 关键词定位法

```mermaid
graph LR
A[打开英文文档] --> B[别试图从头读到尾]
B --> C[Ctrl+F 搜索关键词]
C --> D[定位到相关段落]
D --> E[只读这一段]
E --> F[看不懂的词复制翻译]

关键词从哪来?

1. 报错信息里的关键词
报错:Cannot find module 'xxx'
搜索:module not found

2. 你想实现的功能
想做:用户登录
搜索:authentication, login, sign in

3. 框架/库的名字
搜索:Next.js, React, Supabase

文档阅读技巧

技巧1:先看 Quick Start / Getting Started
├── 每个文档都有「快速开始」章节
├── 跟着做一遍就能跑起来
└── 比从头看概念高效 10 倍

技巧2:看代码示例,跳过理论解释
├── 代码比文字更直观
├── 复制代码 → 运行 → 修改 → 理解
└── 这就是「从实践中学习」

技巧3:善用目录导航
├── 文档左侧通常有目录树
├── 点击感兴趣的章节直接跳转
└── 不需要按顺序读

技巧4:看不懂就翻译
├── Chrome 右键 → 翻译成中文
├── 或者把段落复制给 AI 翻译
└── 先理解意思,再回去看英文原文

常见文档速查

文档地址干什么用
MDN Web Docsdeveloper.mozilla.org前端 API 百科全书
Next.js Docsnextjs.org/docsNext.js 框架文档
React Docsreact.devReact 官方文档
Node.js Docsnodejs.org/docsNode.js API 文档
Tailwind Docstailwindcss.com/docsTailwind CSS 文档

4. 🎯 常用 Prompt 模板

把这些模板存到你的笔记里,遇到问题直接复制修改。

Bug 修复 Prompt

请帮我修复以下 bug。

【环境信息】
- 操作系统:macOS / Windows
- Node.js 版本:v20.x
- 框架:Next.js 14 / React 18 等

【问题描述】
[用一两句话描述你遇到的问题]

【报错信息】

[粘贴完整错误日志]


【相关代码】
```javascript
[粘贴代码]

【我的尝试】 [列出你已经试过的方法]

请分析原因并给出修复方案。


### 代码生成 Prompt

请帮我写一个 [功能名称] 功能。

【需求】

  • 功能1:[描述]
  • 功能2:[描述]

【技术栈】

  • 框架:[Next.js / React / Vue 等]
  • 数据库:[Supabase / MongoDB / 无]
  • 样式:[Tailwind CSS / CSS Modules]

【参考】

  • 类似 [某个网站] 的 [某个功能]

请给出完整可运行的代码,并加上中文注释。


### 代码解释 Prompt

请解释以下代码的功能和原理:

[粘贴代码]

请用通俗易懂的语言解释,我是编程初学者。


### 学习 Prompt

我是编程初学者,目前会 [你的技能水平]。

请用最通俗的语言解释 [某个概念],最好能:

  1. 用生活中的类比来解释
  2. 给一个最简单的代码示例
  3. 列出常见的使用场景

---

## 5. 🔄 解决问题的完整流程

```mermaid
graph TD
A[遇到问题] --> B[先冷静,深呼吸]
B --> C[仔细读错误信息]
C --> D[复制关键错误信息]
D --> E[Google 搜索]
E --> F{找到答案?}
F -->|是| G[照着做,解决问题]
F -->|否| H[去 Stack Overflow 搜]
H --> I{找到答案?}
I -->|是| G
I -->|否| J[问 AI ChatGPT/Claude]
J --> K[用模板提问]
K --> L{AI 解决了?}
L -->|是| G
L -->|否| M[问社区/朋友]
M --> G
G --> N[记录解决方案到笔记]

style A fill:#ff6b6b,color:#fff
style G fill:#66bb6a,color:#fff
style N fill:#42a5f5,color:#fff

最重要的一步:记录!

每次解决一个问题,花 1 分钟记下来:

## 2024-01-15:npm ERESOLVE 错误

**问题**:npm install 时报依赖冲突错误
**原因**:react 版本和某个库不兼容
**解决**`npm install --legacy-peer-deps`
**预防**:以后优先用 pnpm

💡 你记的每一个解决方案,都是未来节省的时间。 三个月后遇到同样的问题,翻笔记 10 秒搞定,而不是再搜一小时。


6. ❌ 新手常犯的搜索错误

错误正确做法
问「怎么做 XX」问「用 XX 技术实现 YY 功能的代码示例」
报错不复制,自己描述直接复制粘贴完整错误
一个问题问 AI 10 遍一次把上下文说清楚
不看报错信息里的行号行号是最有用的线索
搜到答案不验证复制代码 → 运行 → 确认解决了
解决了不记录记到笔记里

✅ 本节练习

  1. 模拟报错搜索:在终端运行 npm install nonexistent-package-12345,然后把报错信息复制到 Google 搜索
  2. 问 AI 一个问题:用模板 1 向 ChatGPT/Claude 提一个编程问题
  3. 读一篇英文文档:打开 https://react.dev/learn ,找到「useState」的文档,用关键词定位法找到使用示例
  4. 建立你的 Prompt 库:把上面的模板复制到你的笔记软件里

💬 记住:遇到问题不是你的错,是编程的日常。大佬也会每天搜报错,区别只是他们搜得更快。学会搜索和提问,你就是「高级初学者」了。

下一节:2.5 互联网术语速查 → HEREDOC_END