Skip to content

A.3 问题解决类模板

本节提供排查问题和寻求帮助的 Prompt 模板,覆盖错误排查、技术选型、概念解释等场景。

模板一:运行时错误排查

适用于:代码报错、程序崩溃、控制台报红

markdown
## 错误信息

运行时遇到以下错误:

[完整粘贴错误信息,包括堆栈跟踪]


## 触发场景

**操作步骤**:
1. [第一步做了什么]
2. [第二步做了什么]
3. [然后就报错了]

**触发频率**:[每次都报错/偶尔报错/特定条件下报错]

## 相关代码

错误指向的代码:
```[语言]
[粘贴错误信息中提到的代码,以及上下文]

环境信息

  • 运行环境:[浏览器版本/Node.js 版本/Python 版本]
  • 框架版本:[React 18/Vue 3/...]
  • 操作系统:[Windows/Mac/Linux]

已尝试的方法

  1. [尝试1]:结果 [成功/失败/部分解决]
  2. [尝试2]:结果 [成功/失败/部分解决]

请帮我

  1. 分析错误的根本原因
  2. 给出修复方案
  3. 解释为什么会出现这个问题(帮助我理解)

### 填写示例

```markdown
## 错误信息

运行时遇到以下错误:

TypeError: Cannot read properties of undefined (reading 'map') at TaskList (TaskList.tsx:15:23) at renderWithHooks (react-dom.development.js:14985:18) at mountIndeterminateComponent (react-dom.development.js:17811:13)


## 触发场景

**操作步骤**:
1. 打开应用首页
2. 页面加载时直接报错
3. 任务列表没有显示出来

**触发频率**:每次刷新页面都报错

## 相关代码

错误指向的代码:
```tsx
// TaskList.tsx
function TaskList({ tasks }) {
  return (
    <ul>
      {tasks.map(task => (          // 第 15 行
        <li key={task.id}>{task.title}</li>
      ))}
    </ul>
  );
}

// App.tsx 中的调用
function App() {
  const [tasks, setTasks] = useState();  // 注意这里
  
  return <TaskList tasks={tasks} />;
}

环境信息

  • 运行环境:Chrome 120
  • 框架版本:React 18.2.0 + TypeScript 5.0
  • 操作系统:Mac

已尝试的方法

  1. 检查 tasks 数据:console.log 发现是 undefined
  2. 刷新页面:问题依旧

请帮我

  1. 分析错误的根本原因
  2. 给出修复方案
  3. 解释为什么会出现这个问题


## 模板二:逻辑错误分析

适用于:代码能跑但结果不对

```markdown
## 问题描述

代码可以运行,但结果不符合预期。

**期望行为**:[应该是什么结果]
**实际行为**:[实际得到什么结果]

## 测试用例

| 输入 | 期望输出 | 实际输出 | 是否正确 |
|-----|---------|---------|---------|
| [输入1] | [期望1] | [实际1] | ❌ |
| [输入2] | [期望2] | [实际2] | ❌ |
| [输入3] | [期望3] | [实际3] | ✅ |

## 相关代码

```[语言]
[粘贴相关代码]

我的分析

我怀疑问题可能出在:[你的猜测]

请帮我

  1. 找出逻辑错误所在
  2. 解释为什么当前逻辑会产生错误结果
  3. 给出修复后的代码

### 填写示例

```markdown
## 问题描述

代码可以运行,但结果不符合预期。

**期望行为**:计算购物车总价时,满 100 减 20
**实际行为**:无论金额多少,都减了 20

## 测试用例

| 输入(商品总价) | 期望输出 | 实际输出 | 是否正确 |
|---------------|---------|---------|---------|
| 150 | 130 | 130 | ✅ |
| 80 | 80 | 60 | ❌ |
| 100 | 80 | 80 | ✅ |

## 相关代码

```javascript
function calculateTotal(items) {
  let total = items.reduce((sum, item) => sum + item.price, 0);
  
  // 满 100 减 20
  if (total > 100) {
    total = total - 20;
  } else {
    total = total - 20;  // 问题可能在这里?
  }
  
  return total;
}

我的分析

我怀疑问题可能出在:else 分支也减了 20,应该是复制粘贴时忘记删掉

请帮我

  1. 确认我的分析是否正确
  2. 给出修复后的代码
  3. 建议如何避免这类复制粘贴错误


## 模板三:技术选型咨询

适用于:不知道选什么库、框架、工具

```markdown
## 项目背景

**项目类型**:[简述项目是做什么的]
**技术栈**:[当前使用的技术]
**团队情况**:[个人项目/团队规模/技术水平]

## 选型需求

我需要选择一个 [类型] 来实现 [功能]。

**核心需求**:
- [需求1]
- [需求2]
- [需求3]

**考虑因素**:
| 因素 | 重要程度 | 说明 |
|-----|---------|------|
| 学习成本 | 高/中/低 | [说明] |
| 社区活跃度 | 高/中/低 | [说明] |
| 性能 | 高/中/低 | [说明] |
| 包体积 | 高/中/低 | [说明] |
| 长期维护 | 高/中/低 | [说明] |

## 已知候选(可选)

我目前了解到的选项有:
1. [选项A]:[简单印象]
2. [选项B]:[简单印象]
3. [选项C]:[简单印象]

## 请帮我

1. 补充我可能遗漏的候选方案
2. 从多个维度对比各方案的优缺点
3. 给出推荐方案及理由
4. 说明什么情况下应该选择其他方案

填写示例

markdown
## 项目背景

**项目类型**:个人博客网站
**技术栈**:Next.js + TypeScript
**团队情况**:个人项目,前端熟练,后端初学

## 选型需求

我需要选择一个数据库方案来存储博客文章。

**核心需求**
- 存储文章内容(Markdown 格式)
- 支持分类和标签
- 能按时间排序查询

**考虑因素**
| 因素 | 重要程度 | 说明 |
|-----|---------|------|
| 学习成本 | 高 | 后端不熟,希望上手简单 |
| 免费额度 | 高 | 个人项目,不想花钱 |
| 与 Next.js 集成 | 中 | 希望有现成教程 |
| 性能 | 低 | 博客访问量不大 |

## 已知候选

我目前了解到的选项有:
1. Supabase:听说是 Firebase 替代品
2. MongoDB Atlas:NoSQL 数据库
3. PlanetScale:MySQL 云服务

## 请帮我

1. 补充我可能遗漏的候选方案
2. 从多个维度对比各方案的优缺点
3. 给出推荐方案及理由
4. 说明什么情况下应该选择其他方案

模板四:概念解释

适用于:不理解某个技术概念

markdown
## 想了解的概念

我想理解 [概念名称]。

## 当前困惑

**我目前的理解**:[你现在认为它是什么]
**困惑的地方**:[哪里不理解]

## 希望的解释方式

**技术深度**:[只要知道怎么用/想了解原理/需要深入细节]
**类比偏好**:[喜欢生活化类比/喜欢技术类比/直接解释就好]

## 相关背景

**我的技术背景**:[熟悉什么技术/语言]
**为什么要了解这个**:[应用场景]

## 请帮我

1. 用通俗的语言解释这个概念
2. 给出一个简单的代码示例
3. 说明什么时候会用到它
4. 指出常见的理解误区

填写示例

markdown
## 想了解的概念

我想理解 React 中的 useEffect。

## 当前困惑

**我目前的理解**:好像是用来处理"副作用"的,但不知道什么算副作用
**困惑的地方**
- 什么时候需要用 useEffect?
- 依赖数组是干什么的?
- 为什么有时候会"无限循环"?

## 希望的解释方式

**技术深度**:只要知道怎么用就行,原理以后再说
**类比偏好**:喜欢生活化类比

## 相关背景

**我的技术背景**:会基础 JavaScript,正在学 React
**为什么要了解这个**:想在组件加载时获取数据

## 请帮我

1. 用通俗的语言解释 useEffect
2. 给出"获取数据"的代码示例
3. 说明依赖数组的作用
4. 解释为什么会"无限循环"以及如何避免

模板五:代码审查

适用于:让 AI 检查代码质量

markdown
## 审查目标

请帮我审查以下代码:

```[语言]
[粘贴代码]

审查维度

请从以下维度检查:

  • [ ] 功能正确性:逻辑是否正确,边界情况是否处理
  • [ ] 安全性:是否有安全隐患(XSS、SQL注入等)
  • [ ] 性能:是否有明显的性能问题
  • [ ] 可读性:命名是否清晰,结构是否合理
  • [ ] 可维护性:是否容易扩展和修改
  • [ ] 错误处理:异常情况是否妥善处理

代码背景

这段代码的作用:[简述功能] 使用场景:[在什么情况下运行]

输出格式

请按以下格式输出:

  1. 问题清单:列出发现的问题,按严重程度排序
  2. 改进建议:针对每个问题给出具体建议
  3. 优化后代码:给出改进后的完整代码


## 精简版:快速提问模板

当问题比较简单时,可以用这个精简版:

```markdown
**问题**:[一句话描述问题]

**背景**:[必要的上下文]

**代码**:
```[语言]
[相关代码]

期望:[你希望得到什么帮助]



## 提问技巧:如何让回答更有用

### 技巧一:先说结论,再给细节

```markdown
❌ 我有一个 React 项目,用的是 TypeScript,然后我在做一个表单验证...
   (AI 读了半天还不知道问题是什么)

✅ 我的表单验证代码报错了。
   技术栈是 React + TypeScript,错误信息是 [xxx]。

技巧二:给出最小复现代码

不要贴整个文件,只贴能复现问题的最小代码。这样 AI 更容易定位问题。

技巧三:说明已经尝试过什么

这能帮助 AI 避免给出你已经试过的无效方案。

常见填写误区

误区问题正确做法
只说"不工作"AI 不知道具体症状描述期望 vs 实际的差异
错误信息只截一半丢失关键信息完整粘贴,包括堆栈跟踪
不给代码AI 只能猜测贴出相关代码片段
概念问题太宽泛"解释一下 JavaScript"具体到某个点,如"解释闭包"

本节要点

  • 错误排查:完整错误信息 + 触发步骤 + 相关代码 + 已尝试方法
  • 逻辑错误:用测试用例展示"期望 vs 实际"
  • 技术选型:明确需求优先级 + 列出考虑因素
  • 概念解释:说明当前理解和困惑点 + 期望的解释深度