Files
qiming/qiming-mobile/.cursor/plans/-8f20f6d7.plan.md

121 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- 8f20f6d7-24c9-47e9-b675-54ce061d0e4f c94b6074-b083-4302-8310-62b6dc28d2b0 -->
# 微信小程序适配问题排查与修复计划
## 问题概览
经过排查,发现以下主要问题需要修复:
### 1. H5 特定 API 缺少条件编译保护
**问题文件:**
- `utils/common.uts` - 使用了 `window.location``document`
- `utils/streamRequest.uts` - 使用了 `window.addEventListener`
- `servers/useRequest.uts` - 使用了 `window.location.hash``window.location.href`
- `utils/permissionHelper.uts` - 使用了 `navigator.permissions`
- `hooks/useMessageEventDelegate.uts` - 使用了 `window.open`, `URLSearchParams`, DOM API
- `servers/audioUploader.uts` - 使用了 `URL.revokeObjectURL`
### 2. 流式请求实现不完整
**问题:**
- `utils/streamRequest.uts` 中的微信小程序分支使用了普通 `uni.request`,但没有正确实现流式数据接收
- 应该使用 `enableChunked``onChunkReceived` 或参考 `weappEventSource` 的实现方式
### 3. WebView 组件配置
**问题:**
- `pages/webview/webview.uvue` 使用了 `<web-view>` 组件
- 微信小程序中需要配置业务域名才能使用 web-view
### 4. 自定义导航栏
**问题:**
- `pages.json` 中所有页面都使用了 `navigationStyle: "custom"`
- 需要确保自定义导航栏组件在微信小程序中正常工作
## 修复计划
### 阶段一:修复 H5 特定 API 条件编译
1. **utils/common.uts**
-`getURLParams` 函数中的 `window.location` 使用条件编译包裹
-`addBaseTarget` 函数中的 `document` 使用条件编译包裹
-`findParentElement``findClassElement` 中的 DOM API 使用条件编译
2. **utils/streamRequest.uts**
- 将顶部的 `window.addEventListener` 使用条件编译包裹(`#ifdef H5`
3. **servers/useRequest.uts**
- `window.location.hash` 已在条件编译中,但需要确保兼容性
- `window.location.href` 已在条件编译中,需要验证
4. **utils/permissionHelper.uts**
- `navigator.permissions` 已在条件编译中,需要确认非 H5 平台的实现
5. **hooks/useMessageEventDelegate.uts**
- `window.open` 需要替换为 uni-app 的导航 API
- `URLSearchParams` 需要条件编译或使用 uni-app 兼容实现
- DOM API (`closest`, `addEventListener`) 需要替换为 uni-app 的事件处理方式
6. **servers/audioUploader.uts**
- `URL.revokeObjectURL` 仅在清理 Blob URL 时使用,需要条件编译保护
### 阶段二:修复流式请求实现
1. **utils/streamRequest.uts**
- 修改 `requestWeapp` 方法,使用 `enableChunked: true``onChunkReceived` 回调
- 参考 `servers/useRequest.uts` 中的 `weappEventSource` 实现方式
- 确保流式数据解析正确
### 阶段三WebView 和导航配置
1. **pages/webview/webview.uvue**
- 确保 web-view 组件在微信小程序中正确使用
- 添加错误处理和兼容性检查
2. **manifest.json**
- 确认微信小程序配置中是否需要添加 web-view 相关配置
3. **自定义导航栏组件**
- 检查 `components/custom-nav-bar` 在微信小程序中的兼容性
- 确保所有页面都能正常显示自定义导航栏
### 阶段四:测试与验证
1. 在微信开发者工具中编译和测试
2. 验证流式请求是否正常工作
3. 验证音频上传功能
4. 验证 WebView 页面跳转
5. 验证所有页面的导航功能
## 实施顺序
1. 先修复 H5 特定 API 的条件编译(避免运行时错误)
2. 修复流式请求实现(核心功能)
3. 处理 WebView 和导航相关配置
4. 最后进行全面测试
### To-dos
- [ ] 修复 utils/common.uts 中的 H5 特定 APIwindow.location、document添加条件编译保护
- [ ] 修复 utils/streamRequest.uts 中的 window.addEventListener添加条件编译保护
- [ ] 修复 hooks/useMessageEventDelegate.uts 中的 DOM API 和 window.open替换为 uni-app API
- [ ] 修复 servers/audioUploader.uts 中的 URL.revokeObjectURL添加条件编译保护
- [ ] 修复 utils/streamRequest.uts 中的微信小程序流式请求实现,使用 enableChunked 和 onChunkReceived
- [ ] 验证 pages/webview/webview.uvue 在微信小程序中的兼容性,检查业务域名配置
- [ ] 验证自定义导航栏组件在微信小程序中是否正常工作
- [ ] 在微信开发者工具中编译测试,验证所有功能是否正常