# 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: 重启前端开发服务器 ```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) --- **注意**: 这些调试日志在开发环境很有用,但在生产环境应该移除或使用日志级别控制。