本文档将帮助你调试 Insight 应用中的常见问题。
Insight 项目提供了多种调试工具和方法,帮助开发者快速定位和解决问题。
应用使用结构化日志记录系统行为。日志级别可以通过环境变量配置:
LOG_LEVEL="debug" # 可选值: debug, info, warn, error在浏览器控制台中查看客户端日志:
- 打开 Chrome DevTools (F12 或 Cmd+Option+I)
- 切换到 "Console" 标签
- 使用过滤器查看不同级别的日志
开发服务器的日志会输出到终端:
npm run dev日志格式示例:
[info] 应用启动成功
[debug] 连接到 Supabase
[error] RPC 请求失败: timeout
如果配置了 Sentry,可以在 Sentry 仪表板中查看错误详情:
- 访问 sentry.io
- 选择你的项目
- 查看 Issues 和 Performance 标签
Network 面板用于监控网络请求:
- 打开 DevTools → Network
- 勾选 "Preserve log" 保留页面跳转日志
- 使用过滤器筛选请求类型(XHR/Fetch)
- 查看请求详情:
- Headers: 请求头和响应头
- Payload: 请求参数
- Response: 响应内容
- Timing: 请求耗时
常用技巧:
- 右键请求 → "Copy" → "Copy as cURL" 复制为 curl 命令
- 使用 "Block request URL" 模拟网络错误
- 使用 "Throttling" 模拟慢速网络
Console 面板用于执行 JavaScript 和查看日志:
常用命令:
// 查看组件状态(React DevTools 集成)
$r; // 选中组件的实例
// 清空控制台
clear();
// 计时
console.time('fetch');
// ... 代码
console.timeEnd('fetch');
// 表格输出
console.table(data);
// 分组日志
console.group('API 请求');
console.log('请求1');
console.log('请求2');
console.groupEnd();Application 面板用于查看本地存储、Cookie 等:
- Local Storage: 查看应用缓存的数据
- Session Storage: 查看会话数据
- Cookies: 查看和编辑 Cookie
- IndexedDB: 查看 IndexedDB 数据
React DevTools 是调试 React 应用的必备工具:
- Chrome: React DevTools
- Firefox: React DevTools
- 打开 DevTools → Components
- 选择组件查看 Props 和 State
- 使用搜索框快速定位组件
- 双击 Props/State 进行编辑(热更新)
- 使用 "Highlight updates" 查看重渲染
Profiler 用于分析组件性能:
- 切换到 "Profiler" 标签
- 点击录制按钮开始录制
- 执行需要分析的操作
- 停止录制查看性能报告
分析指标:
- 渲染耗时
- 重渲染次数
- 组件渲染顺序
Insight 提供交互式 API 文档:
http://localhost:3000/api/docs/swagger
功能:
- 查看所有 API 端点
- 在线测试 API
- 查看请求/响应示例
- 导出 OpenAPI 规范
使用 curl 测试 API:
# 健康检查
curl http://localhost:3000/api/health
# 获取告警列表
curl http://localhost:3000/api/alerts
# 创建告警规则(带认证)
curl -X POST http://localhost:3000/api/alerts/rules \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{"name": "测试告警", "symbol": "ETH/USD"}'推荐使用 API 测试工具:
- Postman: 功能强大的 API 测试工具
- Thunder Client: VS Code 轻量级扩展
配置步骤:
- 设置 Base URL:
http://localhost:3000/api - 添加认证 Header(如需要)
- 保存常用请求为 Collection
Drizzle Studio 提供可视化数据库管理:
npm run db:studio访问 http://localhost:4983 可以:
- 查看所有表和数据
- 执行 SQL 查询
- 编辑数据
- 查看 schema
使用 psql 连接数据库:
# 连接数据库
psql $DATABASE_URL
# 常用 SQL 命令
\dt # 列出所有表
\d table_name # 查看表结构
SELECT * FROM table_name LIMIT 10; # 查询数据启用数据库查询日志:
在 src/lib/database/db.ts 中添加日志配置,或使用环境变量:
LOG_LEVEL="debug"Chrome Performance 面板用于分析页面性能:
- 打开 DevTools → Performance
- 点击录制按钮
- 执行用户操作
- 停止录制查看性能火焰图
分析要点:
- Long Tasks(超过 50ms 的任务)
- 重排重绘
- JavaScript 执行时间
Lighthouse 用于审计网页质量:
# 命令行运行
npm run analyze:bundle
# 或在 Chrome DevTools 中使用
# DevTools → Lighthouse → Generate report审计指标:
- Performance
- Accessibility
- Best Practices
- SEO
- PWA
分析打包体积:
npm run analyze:bundle这会打开一个可视化界面,显示各模块的体积占比。
错误信息:
Error: Connection terminated unexpectedly
解决方案:
- 检查
DATABASE_URL配置是否正确 - 确认 Supabase 项目是否正常运行
- 检查网络连接
- 尝试重启开发服务器
错误信息:
Internal Server Error
解决方案:
- 查看服务端日志获取详细错误
- 检查 Sentry 错误追踪
- 验证请求参数是否正确
- 检查数据库权限
错误信息:
TypeError: Cannot read property 'x' of undefined
解决方案:
- 运行
npm run typecheck检查类型 - 使用可选链操作符
?. - 添加数据验证
- 检查 API 响应数据结构
现象: 页面卡顿,性能差
解决方案:
- 使用 React DevTools Profiler 分析
- 使用
React.memo优化组件 - 使用
useMemo和useCallback - 检查依赖数组是否正确
错误信息: 测试用例失败
解决方案:
- 查看测试输出的详细错误
- 使用
--reporter=verbose获取更多信息 - 单独运行失败的测试:
npm run test -- path/to/test.tsx - 使用
--run --no-watch避免监视模式干扰
当不确定问题所在时,使用二分法:
- 注释掉一半代码
- 测试问题是否还存在
- 重复直到定位到问题代码
使用 Git 对比工作版本:
# 查看当前变更
git diff
# 暂存当前变更,测试干净版本
git stash
# 测试...
git stash pop在 Chrome DevTools 中使用条件断点:
- 在 Sources 面板找到代码
- 点击行号设置断点
- 右键断点 → "Edit breakpoint"
- 输入条件,例如:
user.id === '123'
不修改代码添加日志:
- 在 Sources 面板右键行号
- 选择 "Add log point"
- 输入日志消息,例如:
"User ID: {user.id}"
使用演示模式快速测试 UI:
INSIGHT_DEMO_MODE="true"打印所有环境变量:
console.log('Environment:', process.env);使用 Charles 或 Fiddler 抓包:
- 配置代理
- 拦截和修改请求
- 模拟网络错误
使用 Playwright Trace Viewer 进行 E2E 调试:
# 运行测试并生成 trace
npm run test:e2e -- --trace on
# 查看 trace
npx playwright show-trace trace.zip配置 .vscode/launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Next.js",
"program": "${workspaceFolder}/node_modules/.bin/next",
"args": ["dev"],
"cwd": "${workspaceFolder}"
}
]
}使用 Chrome DevTools 调试移动端:
- Android: Chrome → 更多工具 → 远程设备
- iOS: Safari → 开发 → 模拟器
返回 文档总索引