p***@163.com
p***@163.com
  • 发布:2026-02-09 17:31
  • 更新:2026-02-09 19:26
  • 阅读:25

【报Bug】windows版微信运行时uni.$on未触发,本地真机调试pc端或线上pc端都有问题

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

第三方开发者工具版本号: 2.01.2510270

基础库版本号: 3.14.1

项目创建方式: CLI

CLI版本号: 3.0.0-4080720251210001

操作步骤:

...

预期结果:

...

实际结果:

...

bug描述:

我的逻辑是在a页面一个watch监听内条件判断成功,调用uni.redirectTo在success回调内uni.$emit,然后在b页面的setup内uni.$on

目前表现在windows微信小程序不会触发,mac没有测试过,而在移动端安卓或ios都是正常触发,不确定是微信的问题还是uniapp框架的问题

编译后的小程序代码:

2026-02-09 17:31 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

作为 DCloud 官方人员,我对这条 bug 反馈进行评审如下:


一、反馈完整性评估

检查项 状态 说明
BUG 标题 ✅ 基本清晰 明确指出“windows版微信运行时uni.$on未触发”,但缺少版本号、框架版本等关键信息。
BUG 描述 ⚠️ 缺少关键细节 描述了使用 uni.$emituni.$on 的基本逻辑,但未提供:<br>- 最小可复现代码(a页面和b页面的完整代码)<br>- 是否使用 script setupOptions API<br>- 是否使用了 uni.relaunchuni.redirectTo 的完整调用方式
代码示例 ❌ 缺失 反馈中提到“编译后的小程序代码”但未贴出,无法直接运行复现。
复现步骤 ❌ 缺失 仅描述“a页面watch监听 → uni.redirectTo → success回调中emit → b页面setup中on”,无具体操作路径。
预期结果 ❌ 缺失 未明确说明“预期uni.$on应触发并接收到数据”。
实际结果 ✅ 描述清楚 明确指出“windows微信小程序不触发,移动端正常”。
分类信息 ⚠️ 不完整 提供了操作系统(Windows 10)、HBuilderX为“正式版”,但未提供:<br>- 微信开发者工具版本<br>- uni-app编译器版本<br>- 基础库版本

二、是否为有效 bug?

根据知识库内容,uni.$on 和 uni.$emit 是 uni-app 框架提供的跨页面通信机制,在小程序平台(包括微信小程序)是支持的。但:

  • 微信小程序平台存在生命周期差异uni.relaunch 会关闭所有页面并重新打开目标页面,可能导致 setup 中的 uni.$on 注册时机晚于 emit 触发。
  • Windows 微信开发者工具可能存在与真机不一致的行为,尤其是事件触发时序问题。

⚠️ 结论:该反馈可能成立,但需要补充完整复现代码和步骤才能确认是否为框架 bug 或平台差异。


三、是否为基础概念问题?

  • 不是 uni-app 不支持 uni.$on/uni.$emit,而是使用时序和平台差异可能导致未触发。
  • 用户可能未意识到 uni.relaunch 会销毁所有页面,导致 uni.$on 注册时机滞后。

四、官方建议(基于知识库)

  1. 补充完整复现工程:请提供一个最小可复现的 uni-app 项目(含 a.vue 和 b.vue),并说明具体操作路径。
  2. 确认生命周期时序
    • 是否在 onLoadonShow 中注册 uni.$on
    • 是否在 uni.relaunchsuccess 回调中立即 emit
  3. 建议使用替代方案
    • 若需跨页面通信,可尝试使用 uni.navigateToMiniProgramextraData 传参。
    • 或使用全局状态管理(如 Pinia 或 Vuex)替代事件总线。
  4. 确认平台差异
    • 请测试 macOS 微信开发者工具Windows 真机 是否复现,以排除开发者工具 bug。

五、下一步行动

请用户补充以下内容后重新提交:

  1. 最小复现工程(a.vue 和 b.vue 的完整代码)。
  2. 微信开发者工具版本和基础库版本。
  3. 是否使用 script setupOptions API
  4. 是否尝试过 uni.switchTab 替代 uni.relaunch

若补充后仍复现,可提交至 DCloud 官方社区 并附工程链接,我们将优先处理。

内容为 AI 生成,仅供参考
p***@163.com

p***@163.com (作者)

用的微信新版开发工具

DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

如果相同的代码在不同的机器上表现有差异,一般来说是宿主环境的问题,也就是微信小程序的问题,uniapp 不会针对特定平台做差异处理。你可以在微信社区搜一搜是否有类似的反馈。 你也可以测试 https://developers.weixin.qq.com/miniprogram/dev/api/route/EventChannel.html 看是否能解决你的问题

  • p***@163.com (作者)

    感谢回复,我试下是否微信小程序的问题

    47 分钟前

要回复问题请先登录注册