uni-app 开发微信小程序时若引入微信小程序官方的插件例如小程序门店助手OCR支持等在使用预览和真机调试时无法正常显示

uni-app 开发微信小程序时若引入微信小程序官方的插件例如小程序门店助手OCR支持等在使用预览和真机调试时无法正常显示

操作步骤:

  • 只需要在manifest.json 源码试图中小程序相关的部分添加
    "plugins": {
      "bb-plugin": {
        "version": "latest",
        "provider": "wx69b7451feb427f0e"
      }
    },
    
    然后运行小程序,点击预览或真机调试然后用手机扫码在手机上无法正常显示。

预期结果:

  • 之前遇到这个问题可以用 hbuilderx 3.6.4版本编译和打包就可以避免这个问题,但是3.6.4距离现在最新的4.7.5已经更新了很长时间这个问题依旧没有得到解决。

实际结果:

bug描述:

  • uniapp 开发微信小程序时,若引入微信小程序官方的插件例如:小程序门店助手、OCR支持 等在使用预览和真机调试时会报错:runtime.js:1 Error during evaluating file “app.js”: global @ runtime.js:1 runtime.js:1 Reflect.apply requires the first argument be a function
信息类别 详细信息
产品分类 uniapp/小程序/微信
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 15.5
HBuilderX类型 正式
HBuilderX版本号 4.75
第三方开发者工具版本号 1.06.2504020
基础库版本号 3.9.0
项目创建方式 HBuilderX

更多关于uni-app 开发微信小程序时若引入微信小程序官方的插件例如小程序门店助手OCR支持等在使用预览和真机调试时无法正常显示的实战教程也可以访问 https://www.itying.com/category-93-b0.html

12 回复

vue是什么版本呢?

更多关于uni-app 开发微信小程序时若引入微信小程序官方的插件例如小程序门店助手OCR支持等在使用预览和真机调试时无法正常显示的实战教程也可以访问 https://www.itying.com/category-93-b0.html


回复 3***@qq.com: 发个复现demo

回复 DCloud_UNI_JBB: demo 我发下面了

运行这个demo 然后在小程序开发者工具上点击预览或真机调试,扫码后打开调试就可以看见报错了。

没复现报错

运行后点击预览或者是真机调试,用手机扫码后在手机端的调试模式里可以看到报错,或者你直接用真机调试在新弹出的调试框里也有看到。

是这个报错吗

这个错误是指你不是该小程序的开发者,点击右上角的 “详情” 更改一个你是开发者的appid,重新编译后会弹出添加插件的弹窗,点击添加后,点击真机调试在弹出二维码后用手机扫码。

验证插件是否添加成功可以在右上角的 “详情” —> “基本信息” —> “插件信息” 那里看到,添加成功后再使用真机调试扫码。

回复 3***@qq.com: 请问这个问题解决了吗

这个问题是由于 uni-app 在较新版本中编译时,对微信小程序插件的支持存在兼容性问题导致的。从错误信息来看,核心问题是 Reflect.apply requires the first argument be a function,这通常与运行时环境或插件初始化有关。

解决方案:

  1. 检查插件权限配置
    manifest.json 中配置插件后,需在微信开发者工具中确认插件已正确启用:

    • 打开微信开发者工具 → 详情 → 本地设置 → 勾选「启用插件」
    • 在「插件」页面检查插件状态是否为「已授权」
  2. 调整基础库版本
    将微信开发者工具的基础库版本降至 2.16.02.20.0 等稳定版本(当前使用的 3.9.0 可能存在兼容性问题)。

  3. 清理编译缓存

    • 删除 unpackagenode_modules 目录
    • 在 HBuilderX 中执行「运行 → 清理手机运行缓存」
    • 重启 HBuilderX 和微信开发者工具
  4. 验证插件调用代码
    确保在页面中调用插件的逻辑符合规范:

    const plugin = requirePlugin('bb-plugin');
    // 调用前检查插件方法是否存在
    if (plugin?.methodName) {
      plugin.methodName();
    }
回到顶部