4.3 KiB
4.3 KiB
微信小程序适配问题排查与修复计划
问题概览
经过排查,发现以下主要问题需要修复:
1. H5 特定 API 缺少条件编译保护
问题文件:
utils/common.uts- 使用了window.location和documentutils/streamRequest.uts- 使用了window.addEventListenerservers/useRequest.uts- 使用了window.location.hash和window.location.hrefutils/permissionHelper.uts- 使用了navigator.permissionshooks/useMessageEventDelegate.uts- 使用了window.open,URLSearchParams, DOM APIservers/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 条件编译
- utils/common.uts
- 将
getURLParams函数中的window.location使用条件编译包裹 - 将
addBaseTarget函数中的document使用条件编译包裹 - 将
findParentElement和findClassElement中的 DOM API 使用条件编译
- utils/streamRequest.uts
- 将顶部的
window.addEventListener使用条件编译包裹(#ifdef H5)
- servers/useRequest.uts
window.location.hash已在条件编译中,但需要确保兼容性window.location.href已在条件编译中,需要验证
- utils/permissionHelper.uts
navigator.permissions已在条件编译中,需要确认非 H5 平台的实现
- hooks/useMessageEventDelegate.uts
window.open需要替换为 uni-app 的导航 APIURLSearchParams需要条件编译或使用 uni-app 兼容实现- DOM API (
closest,addEventListener) 需要替换为 uni-app 的事件处理方式
- servers/audioUploader.uts
URL.revokeObjectURL仅在清理 Blob URL 时使用,需要条件编译保护
阶段二:修复流式请求实现
- utils/streamRequest.uts
- 修改
requestWeapp方法,使用enableChunked: true和onChunkReceived回调 - 参考
servers/useRequest.uts中的weappEventSource实现方式 - 确保流式数据解析正确
阶段三:WebView 和导航配置
- pages/webview/webview.uvue
- 确保 web-view 组件在微信小程序中正确使用
- 添加错误处理和兼容性检查
- manifest.json
- 确认微信小程序配置中是否需要添加 web-view 相关配置
- 自定义导航栏组件
- 检查
components/custom-nav-bar在微信小程序中的兼容性 - 确保所有页面都能正常显示自定义导航栏
阶段四:测试与验证
- 在微信开发者工具中编译和测试
- 验证流式请求是否正常工作
- 验证音频上传功能
- 验证 WebView 页面跳转
- 验证所有页面的导航功能
实施顺序
- 先修复 H5 特定 API 的条件编译(避免运行时错误)
- 修复流式请求实现(核心功能)
- 处理 WebView 和导航相关配置
- 最后进行全面测试
To-dos
- 修复 utils/common.uts 中的 H5 特定 API(window.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 在微信小程序中的兼容性,检查业务域名配置
- 验证自定义导航栏组件在微信小程序中是否正常工作
- 在微信开发者工具中编译测试,验证所有功能是否正常