Files
ColaFlow/DEBUGGING_GUIDE.md
Yaojia Wang 24fb646739 docs: Add API connection debugging documentation and progress update
Added comprehensive debugging tools and documentation for API connection issues.

Changes:
- Created test-api-connection.sh - Automated diagnostic script
- Created DEBUGGING_GUIDE.md - Step-by-step debugging guide
- Created API_CONNECTION_FIX_SUMMARY.md - Complete fix summary
- Updated progress.md with API connection debugging enhancement entry

These tools help diagnose and resolve frontend-backend connection issues.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 09:15:54 +01:00

175 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ColaFlow API 连接问题诊断指南
## 修复完成时间
2025-11-03
## 问题描述
项目列表页面无法显示项目数据,前端可以访问但无法连接到后端 API。
## 已实施的修复
### 1. 增强 API 客户端调试lib/api/client.ts
- 添加了 API URL 的控制台日志输出
- 为每个请求添加详细的日志记录
- 增强错误处理和错误信息输出
- 捕获网络错误并输出详细信息
### 2. 改进项目页面错误显示app/(dashboard)/projects/page.tsx
- 显示详细的错误信息(而不是通用消息)
- 显示当前使用的 API URL
- 添加故障排查步骤
- 添加重试按钮
- 添加控制台调试日志
### 3. 增强 useProjects Hooklib/hooks/use-projects.ts
- 添加详细的日志记录
- 减少重试次数以更快失败(从 3次 降至 1次
- 捕获并记录所有错误
## 如何使用调试功能
### 步骤 1: 重启前端开发服务器
```bash
cd colaflow-web
npm run dev
```
重启是必要的,因为 Next.js 需要重新加载以应用环境变量更改。
### 步骤 2: 打开浏览器开发工具
1. 访问 http://localhost:3000/projects
2. 按 F12 打开开发者工具
3. 切换到 Console 标签页
### 步骤 3: 查看控制台输出
你应该看到以下日志:
```
[API Client] API_URL: http://localhost:5167/api/v1
[API Client] NEXT_PUBLIC_API_URL: http://localhost:5167/api/v1
[useProjects] Fetching projects... {page: 1, pageSize: 20}
[API Client] Request: {method: 'GET', url: 'http://localhost:5167/api/v1/projects?page=1&pageSize=20', endpoint: '/projects?page=1&pageSize=20'}
```
如果出现错误,你会看到:
```
[API Client] Network error: {url: '...', error: 'Failed to fetch', errorObject: ...}
[useProjects] Fetch failed: TypeError: Failed to fetch
[ProjectsPage] Error loading projects: TypeError: Failed to fetch
```
### 步骤 4: 检查网络请求
1. 在开发者工具中切换到 Network 标签页
2. 刷新页面
3. 查找对 `http://localhost:5167/api/v1/projects` 的请求
4. 检查请求状态:
- **失败/红色**: 服务器未响应
- **404**: 路由不存在
- **500**: 服务器错误
- **CORS错误**: 跨域配置问题
### 步骤 5: 查看错误屏幕
如果 API 无法连接,页面会显示详细的错误卡片:
- **Error Details**: 具体的错误消息
- **API URL**: 当前配置的 API 地址
- **Troubleshooting Steps**: 故障排查步骤
- **Retry按钮**: 点击重试
## 常见问题诊断
### 问题 1: "Failed to fetch" 错误
**原因**: 后端服务器未运行或无法访问
**解决方案**:
```bash
# 检查后端是否在运行
curl http://localhost:5167/api/v1/health
# 如果失败,启动后端服务器
cd ColaFlow.Api
dotnet run
```
### 问题 2: API URL 使用默认端口 5000
**原因**: 环境变量未正确加载
**解决方案**:
1. 检查 `.env.local` 文件是否存在且包含:
```
NEXT_PUBLIC_API_URL=http://localhost:5167/api/v1
```
2. 重启 Next.js 开发服务器
3. 确保没有 `.env` 文件覆盖设置
### 问题 3: CORS 错误
**原因**: 后端未配置允许前端域名
**解决方案**: 检查后端 CORS 配置ColaFlow.Api/Program.cs:
```csharp
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowFrontend", policy =>
{
policy.WithOrigins("http://localhost:3000")
.AllowAnyMethod()
.AllowAnyHeader();
});
});
```
### 问题 4: 404 错误
**原因**: API 路由不存在或路径不正确
**解决方案**:
1. 检查后端路由配置
2. 确认 API 前缀是 `/api/v1`
3. 检查控制器路由是否正确
## 验证修复
### 成功的日志输出示例
```
[API Client] API_URL: http://localhost:5167/api/v1
[useProjects] Fetching projects...
[API Client] Request: GET http://localhost:5167/api/v1/projects?page=1&pageSize=20
[API Client] Response: {url: '...', status: 200, data: [...]}
[useProjects] Fetch successful: [...]
[ProjectsPage] State: {isLoading: false, error: null, projects: [...]}
```
### 检查清单
- [ ] 控制台显示正确的 API URL (5167端口)
- [ ] 网络请求显示 200 状态码
- [ ] 控制台显示成功的响应数据
- [ ] 页面显示项目列表或"No projects yet"消息
- [ ] 没有错误消息或红色日志
## 下一步行动
### 如果问题仍然存在:
1. **检查后端日志**: 查看后端控制台输出
2. **测试 API 直接访问**: 使用 curl 或 Postman 测试 API
3. **检查防火墙**: 确保端口 5167 未被阻止
4. **检查端口冲突**: 确认没有其他程序使用 5167 端口
### 如果问题已解决:
1. 移除调试日志(生产环境)
2. 添加更好的错误处理
3. 考虑添加 API 健康检查端点
4. 实施重试逻辑和超时处理
## 相关文件
- `colaflow-web/lib/api/client.ts` - API 客户端配置
- `colaflow-web/lib/hooks/use-projects.ts` - Projects 数据 hook
- `colaflow-web/app/(dashboard)/projects/page.tsx` - 项目列表页面
- `colaflow-web/.env.local` - 环境变量配置
## Git 提交
- Commit: `fix(frontend): Add comprehensive debugging for API connection issues`
- Branch: main
- Files changed: 3 (client.ts, use-projects.ts, page.tsx)
---
**注意**: 这些调试日志在开发环境很有用,但在生产环境应该移除或使用日志级别控制。