前言
调试是开发中最花时间的环节之一!AI可以帮我们快速定位和修复错误!
1. 错误信息分析
1.1 把错误信息发给AI
javascript
/* 错误信息:
Uncaught TypeError: Cannot read properties of undefined (reading 'map')
at ProductList (ProductList.tsx:15:20)
*/
/* 提示词:
"帮我分析这个错误并修复:
错误:Cannot read properties of undefined (reading 'map')
文件:ProductList.tsx 第15行
我的代码:
function ProductList({ products }) {
return (
<div>
{products.map(product => (
<div key={product.id}>{product.name}</div>
))}
</div>
);
}"
*/
// AI修复后的代码
interface Product {
id: string;
name: string;
}
interface ProductListProps {
products?: Product[];
}
function ProductList({ products = [] }: ProductListProps) {
return (
<div>
{products.map(product => (
<div key={product.id}>{product.name}</div>
))}
</div>
);
}
1.2 常见错误快速修复
| 错误 | AI修复方案 |
|---|---|
undefined/null 访问 |
添加默认值、可选链、空值检查 |
| 类型错误 | 添加TypeScript类型定义 |
| Hook使用错误 | 检查Hook调用位置和依赖 |
| 异步问题 | 添加loading/error状态 |
2. AI调试助手
javascript
// 让AI帮你写调试代码
/* 提示词:
"给这个组件添加调试日志和错误边界:
function DataFetcher() {
const [data, setData] = useState(null);
useEffect(() => {
fetch('/api/data')
.then(res => res.json())
.then(data => setData(data));
}, []);
return <div>{data.content}</div>;
}"
*/
// 调试增强版
import { useState, useEffect } from 'react';
interface Data {
content: string;
}
function DataFetcher() {
const [data, setData] = useState<Data | null>(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState<string | null>(null);
useEffect(() => {
console.log('[DataFetcher] 开始获取数据');
const fetchData = async () => {
try {
const res = await fetch('/api/data');
if (!res.ok) {
throw new Error(`HTTP error! status: ${res.status}`);
}
const data = await res.json();
console.log('[DataFetcher] 获取数据成功:', data);
setData(data);
setError(null);
} catch (err) {
console.error('[DataFetcher] 获取数据失败:', err);
setError(err instanceof Error ? err.message : 'Unknown error');
} finally {
setLoading(false);
}
};
fetchData();
}, []);
if (loading) {
return <div className="p-4">加载中...</div>;
}
if (error) {
return (
<div className="p-4 bg-red-50 text-red-700">
<h3 className="font-bold">错误</h3>
<p>{error}</p>
</div>
);
}
return <div>{data?.content}</div>;
}
export default DataFetcher;
3. 今日小结
这一篇我们学习了:
- AI分析错误信息
- 常见错误快速修复
- AI调试助手
4. 下篇预告
下一篇,我们学习 AI辅助的文档自动生成!