4.3 KiB
4.3 KiB
平台更新功能 - 问题修复记录
❌ 原始错误
前端错误信息
获取数据失败:SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON
错误原因分析
-
路径不匹配:
- 前端请求:
/api/platform/upgrade/list - Vite 代理配置:只代理
/platform/*和/backend/*路径 - 后端路由:注册在
/api/platform/upgrade/list
- 前端请求:
-
请求被重定向到 404 页面:
- 由于
/api/*没有被代理,请求直接访问前端开发服务器(端口 4000) - 找不到对应路由,返回 HTML 格式的 404 页面
- 前端尝试解析 HTML 为 JSON,导致语法错误
- 由于
✅ 解决方案
修改前端请求路径
文件: platform/src/views/platform/platformupgrade/index.vue
修改前:
const response = await fetch(`/api/platform/upgrade/list?limit=${pageSize.value * 2}`);
修改后:
const response = await fetch(`/platform/api/upgrade/list?limit=${pageSize.value * 2}`);
路径映射说明
前端请求:/platform/api/upgrade/list
↓
Vite 代理 (vite.config.js)
↓
转发到:http://127.0.0.1:9000/platform/api/upgrade/list
↓
Beego 路由匹配
↓
实际路由:/api/platform/upgrade/list ← 注意路径顺序不同!
🔧 需要调整的地方
当前方案存在路径不一致的问题。为了保持路径统一,有两种方案:
方案一:修改后端路由(推荐)
文件: go/routers/api/api.go
将路由从 /api/platform/upgrade/list 改为 /platform/api/upgrade/list:
// 修改前
beego.Router("/api/platform/upgrade/list", &controllers.ApiPlatformUpgradeController{}, "get:List")
beego.Router("/api/platform/upgrade/detail", &controllers.ApiPlatformUpgradeController{}, "get:Detail")
// 修改后
beego.Router("/platform/api/upgrade/list", &controllers.ApiPlatformUpgradeController{}, "get:List")
beego.Router("/platform/api/upgrade/detail", &controllers.ApiPlatformUpgradeController{}, "get:Detail")
优点:
- 前后端路径完全一致
- 便于维护和理解
方案二:保持现有路由,前端使用完整路径
如果后端服务已经部署且无法修改路由,前端可以这样写:
// 生产环境:直接使用完整 URL
const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || 'http://localhost:9000';
const response = await fetch(`${API_BASE_URL}/api/platform/upgrade/list?limit=${pageSize.value * 2}`);
缺点:
- 开发环境和生产环境配置复杂
- 不利于本地调试
📝 后续建议
-
统一路径规范:
- 建议采用方案一,统一使用
/platform/api/*路径结构 - 所有 Platform 相关接口都以此前缀开头
- 建议采用方案一,统一使用
-
添加错误处理:
const response = await fetch(`/platform/api/upgrade/list?limit=${pageSize.value * 2}`); // 检查响应状态 if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } // 检查是否是 JSON 格式 const contentType = response.headers.get('content-type'); if (!contentType?.includes('application/json')) { const text = await response.text(); console.error('非 JSON 响应:', text.substring(0, 200)); throw new Error('API 返回非 JSON 格式'); } const result = await response.json(); -
环境变量配置: 创建
.env.development和.env.production文件:# .env.development VITE_API_BASE_URL=http://127.0.0.1:9000 # .env.production VITE_API_BASE_URL=https://your-domain.com
🚀 立即测试步骤
-
确保数据库已初始化:
-- 执行 SQL 脚本 source docs/sql/platform_upgrade.sql -
重启后端服务:
cd go bee run -
启动前端服务:
cd platform npm run dev -
访问管理页面:
- 登录系统
- 访问:
http://127.0.0.1:4000/platform/platformupgrade - 应该能看到示例数据
-
查看官网首页展示:
- 访问官网首页
- 滚动到"近期平台更新内容"区域
- 应该能看到 3 条示例更新记录
修复时间: 2026-09-18
修复内容: 修正前端 API 请求路径
影响范围: Platform 管理平台页面