- 新增 docs/ISSUES.md 问题记录文档 - 记录问题 #001:新建机器人报 Failed to fetch 错误 - 包含问题现象、原因分析、解决方案 - 提供问题记录模板
2.8 KiB
2.8 KiB
问题记录文档
记录智队中枢项目开发过程中发现的问题、原因分析和解决方案
问题 #001:新建机器人报 "Failed to fetch" 错误
问题现象
发现时间:2026-03-15
发现版本:v0.9.8
问题描述: 用户在智队中枢 Web 页面点击「新建机器人」按钮,填写表单提交后,前端报错:
Failed to fetch
影响范围:
- 新建机器人功能
- 所有
/api/bots相关请求
问题原因
根本原因:Flask 路由尾部斜杠不一致导致 301 重定向
详细分析:
| 组件 | 路径 | 说明 |
|---|---|---|
| Flask 蓝图注册 | url_prefix='/api/bots' |
无尾部斜杠 |
| Flask 路由定义 | @bots_bp.route('/') |
有前导斜杠 |
| 实际完整路径 | /api/bots/ |
有尾部斜杠 |
| 前端请求路径 | fetch('/api/bots') |
无尾部斜杠 |
错误流程:
1. 前端发送 POST /api/bots(无尾部斜杠)
↓
2. Flask 返回 301 重定向 → /api/bots/(有尾部斜杠)
↓
3. POST 请求被重定向时:
- 某些浏览器会将 POST 改为 GET
- fetch API 无法正确处理重定向
↓
4. 前端报错 "Failed to fetch"
验证结果:
# 不带尾部斜杠 → 301 重定向
curl -X POST http://localhost:9000/api/bots
# 返回: Redirecting to /api/bots/
# 带尾部斜杠 → 正常响应
curl -X POST http://localhost:9000/api/bots/
# 返回: {"msg": "Not enough segments"} # 正常的 JWT 错误
解决方案
方案一:前端修改(推荐)
修改 frontend/src/components/chat/CreateBotModal.vue:
// 修改前
const response = await fetch('/api/bots', {
// 修改后
const response = await fetch('/api/bots/', {
方案二:后端修改
修改 app/routes/bots.py:
# 修改前
@bots_bp.route('/', methods=['POST'])
# 修改后
@bots_bp.route('', methods=['POST'])
方案三:Flask 配置(全局生效)
在 app/__init__.py 中添加:
app.url_map.strict_slashes = False
解决状态
| 状态 | 日期 |
|---|---|
| ⏳ 待修复 | - |
问题记录模板
## 问题 #XXX:[问题标题]
### 问题现象
**发现时间**:YYYY-MM-DD
**发现版本**:vX.X.X
**问题描述**:
[描述问题现象]
**影响范围**:
- [影响的功能模块]
---
### 问题原因
**根本原因**:[一句话概括]
**详细分析**:
[详细的原因分析]
---
### 解决方案
**方案**:[解决方案描述]
**代码修改**:
```语言
// 修改前
[代码]
// 修改后
[代码]
解决状态
| 状态 | 日期 |
|---|---|
| ✅ 已修复 | YYYY-MM-DD |
---
_文档创建时间:2026-03-15 | 维护者:小白 🐶_