6.4 KiB
6.4 KiB
服务列表游客模式修复完整指南
当前状态
✅ 代码已修改完成 ⏳ 等待清除缓存并重新编译
问题现象
从你的截图可以看到:
[Request] 游客模式,访问白名单接口,静默失败: /api/category/all
加载服务分类失败: {code: 401, message: "不存在", silent: true}
这说明:小程序还在使用旧代码,修改还没有生效!
已完成的代码修改
1. 游客白名单 (✅ 已完成)
文件: peidu/uniapp/src/utils/request.js
const GUEST_ALLOWED_URLS = [
'/api/notification/unread-count',
'/api/timecard/list',
'/api/home/courses',
'/api/banner/list',
'/api/service/list',
'/api/service/search', // ✅ 已添加
'/api/category/all', // ✅ 已添加
'/api/teacher/list',
'/api/course/list',
'/api/order/list',
'/api/order/list-full'
]
2. HTTP 401错误处理 (✅ 已完成)
文件: peidu/uniapp/src/utils/request.js 第187-202行
if (isGuestMode() && isGuestAllowedUrl(options.url)) {
console.log('[Request] 游客模式,白名单接口返回401,返回空数据:', options.url)
// 根据不同的接口返回不同的空数据结构
let emptyData = []
if (options.url.includes('/category/all')) {
emptyData = [] // 分类列表为空数组
} else if (options.url.includes('/service/list')) {
emptyData = { records: [], total: 0 } // 服务列表为分页结构
} else if (options.url.includes('/service/search')) {
emptyData = { records: [], total: 0 } // 搜索结果为分页结构
}
resolve({ code: 200, data: emptyData, message: 'success' })
return
}
3. 业务码401错误处理 (✅ 已完成)
文件: peidu/uniapp/src/utils/request.js 第273-288行
if (isGuestMode() && isGuestAllowedUrl(options.url)) {
console.log('[Request] 游客模式,白名单接口业务码401,返回空数据:', options.url)
// 根据不同的接口返回不同的空数据结构
let emptyData = []
if (options.url.includes('/category/all')) {
emptyData = [] // 分类列表为空数组
} else if (options.url.includes('/service/list')) {
emptyData = { records: [], total: 0 } // 服务列表为分页结构
} else if (options.url.includes('/service/search')) {
emptyData = { records: [], total: 0 } // 搜索结果为分页结构
}
resolve({ code: 200, data: emptyData, message: 'success' })
return
}
清除缓存步骤 (⚠️ 必须执行!)
方法1: 使用批处理文件 (推荐)
执行以下批处理文件:
Archive/[一次性]强制清除所有缓存-服务列表修复-2026-02-01.bat
这个脚本会:
- 停止所有Node进程和微信开发者工具
- 删除项目编译缓存 (unpackage, node_modules.cache, .hbuilderx, dist)
- 删除微信开发者工具缓存
- 删除小程序文件系统缓存
- 验证代码修改是否存在
方法2: 手动清除 (如果批处理失败)
步骤1: 关闭微信开发者工具
- 完全关闭微信开发者工具
步骤2: 删除项目缓存
进入项目目录 peidu/uniapp,删除以下文件夹:
unpackage/node_modules/.cache/.hbuilderx/dist/
步骤3: 删除微信开发者工具缓存
删除以下目录:
%USERPROFILE%\AppData\Local\微信开发者工具\User Data\Default\Cache%USERPROFILE%\AppData\Local\微信开发者工具\User Data\Default\Code Cache%USERPROFILE%\AppData\Local\微信开发者工具\User Data\Default\WeappFileSystem
步骤4: 重新打开微信开发者工具
- 打开微信开发者工具
- 点击菜单: 工具 > 清除缓存 > 清除全部缓存
- 关闭微信开发者工具
- 重新打开微信开发者工具
步骤5: 重新编译
- 点击"编译"按钮
- 等待编译完成
验证修复是否成功
1. 查看控制台日志
编译完成后,以游客身份访问服务列表,控制台应该显示:
✅ 正确的日志 (修复成功):
[Request] 游客模式,访问白名单接口,静默失败: /api/category/all
[Request] 游客模式,白名单接口业务码401,返回空数据: /api/category/all
服务分类响应: {code: 200, data: [], message: "success"}
服务分类加载成功: 0 个
❌ 错误的日志 (还在使用旧代码):
[Request] 游客模式,访问白名单接口,静默失败: /api/category/all
加载服务分类失败: {code: 401, message: "不存在", silent: true}
2. 查看页面显示
✅ 正确的显示 (修复成功):
- 页面正常显示,不报错
- 左侧分类列表为空
- 右侧服务列表为空
- 不显示"加载分类失败"的提示
❌ 错误的显示 (还在使用旧代码):
- 显示"加载分类失败"提示
- 页面可能显示异常
预期效果
游客模式
- ✅ 可以访问服务列表页面
- ✅ 页面正常显示(不报错)
- ✅ 分类列表为空
- ✅ 服务列表为空
- ✅ 搜索功能正常(返回空结果)
已登录模式
- ✅ 正常显示服务分类
- ✅ 正常显示服务列表
- ✅ 搜索功能正常
- ✅ 可以正常预约
如果还是不行
检查1: 确认代码修改
在项目目录执行:
cd peidu/uniapp/src/utils
findstr /C:"'/api/category/all'" request.js
findstr /C:"'/api/service/search'" request.js
findstr /C:"emptyData = []" request.js
应该能找到这些内容。
检查2: 确认编译输出
查看微信开发者工具的编译输出,确认没有编译错误。
检查3: 尝试硬重启
- 完全关闭微信开发者工具
- 重启电脑
- 重新打开微信开发者工具
- 重新编译
检查4: 查看网络请求
在微信开发者工具的 Network 标签中,查看 /api/category/all 请求:
- 请求头中是否有
Authorization字段?- 游客模式下不应该有
- 响应状态码是什么?
- 应该是 401
- 响应内容是什么?
相关文件
peidu/uniapp/src/utils/request.js- 请求拦截器 (✅ 已修改)peidu/uniapp/src/pages/service/list.vue- 服务列表页面Archive/[一次性]强制清除所有缓存-服务列表修复-2026-02-01.bat- 清除缓存脚本
总结
代码修改已完成! 现在需要:
- ⚠️ 执行清除缓存脚本
- ⚠️ 重新编译小程序
- ⚠️ 验证修复是否成功
如果按照步骤操作后还是不行,请提供:
- 控制台的完整日志
- Network标签中的请求详情
- 编译输出信息
修复时间: 2026-02-01
修复人员: Kiro AI
状态: 代码已修改,等待清除缓存并重新编译