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