bober
bober
  • 发布:2025-11-28 11:26
  • 更新:2025-11-28 11:41
  • 阅读:39

【报Bug】用uniapp导出微信小程序插件,并用uniapp开发的小程序测试时报错

分类:uni-app

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

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: CPU: Apple M1; 系统:macOS Ventura 13.4

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

基础库版本号: 3.11.2

项目创建方式: CLI

CLI版本号: 3.0.0-4080520251106001

示例代码:

小程序项目里不能有下边代码, 有就会报错,去掉@click就好了【开发者工具里运行正常,真机调试时会报错】。详见附件源码和构建后的可运行在开发者工具里的代码

<view @click="toPluginPage">click me</view>

操作步骤:

插件项目

  1. 创建: npx degit dcloudio/uni-preset-vue#vite-ts test-mp-plugin-vue3
  2. 编写代码(见附件)【【【注意!!!需要按照贴子:https://ask.dcloud.net.cn/question/215671 修改node_modules里的代码,否则报错】】】
  3. 构建插件: pnpm run build:mp-weixin --plugin plugin
    4、把构建出来的plugin目录复制到 下边的“小程序项目”,并修改plugin/plugin.json里的main为"app.js"(附件"在微信开发者工具里的代.zip"已修改)

小程序项目

  1. 创建: npx degit dcloudio/uni-preset-vue#vite test-mp-app-vue3
  2. 编写代码(见附件)
  3. 构建小程序: pnpm run build:mp-weixin
  4. 用微信开发者导入构建后的目录/dist/build/mp-weixin
    5、在微信开发者工具里修改project.config.json里的下边字段的值:
    setting.es6 = false; //原来ture要改成false, 不然报错。
    compileType = "plugin"
    增加: pluginRoot = "plugin"
    注:附件"在微信开发者工具里的代.zip"已修改, 可直接用

预期结果:

不报错。点击小程序首页的“click me ”能跳到一个不存在的页,路径是“plugin://xxx/page-index”

实际结果:

控制台报错,点击小程序的click me 无响应。

报错信息:

app-service.js:2385 TypeError: Cannot read properties of null (reading 'ctx')  
    at _i (app-service.js:2364)  
    at exports.o (app-service.js:2364)  
    at Proxy.<anonymous> (app-service.js:2419)  
    at Qs (app-service.js:2386)  
    at wn.n [as fn] (app-service.js:2386)  
    at wn.run (app-service.js:2385)  
    at e.update (app-service.js:2386)  
    at app-service.js:2386  
    at Js (app-service.js:2386)  
    at i (app-service.js:2386)

bug描述:

问题描述:
我在用uniapp“开发微信小程序插件”,插件完成以后。 又用uniapp开发了一个测试该插件的小程序,结果运行的时候报下边错误,经排查,只要小程序里有用“@click”就会报错,去掉它就恢复正常了。当然了。如果在开发者工具里不以‘plugin’测试也是正常的。

报错信息:

app-service.js:2385 TypeError: Cannot read properties of null (reading 'ctx')  
    at _i (app-service.js:2364)  
    at exports.o (app-service.js:2364)  
    at Proxy.<anonymous> (app-service.js:2419)  
    at Qs (app-service.js:2386)  
    at wn.n [as fn] (app-service.js:2386)  
    at wn.run (app-service.js:2385)  
    at e.update (app-service.js:2386)  
    at app-service.js:2386  
    at Js (app-service.js:2386)  
    at i (app-service.js:2386)
2025-11-28 11:26 负责人:无 分享
已邀请:
DCloud_UNI_JBB

DCloud_UNI_JBB

这和你的测试结果一致吗?我能点进来

  • bober (作者)

    一致的! 如果出现这个就证明是预期内的结果 。

    抱歉我忘说一句话了: 在开发者工具里是好的!! 在手机上“真机调试”才会报错!! 在手机上“真机调试”才会报错!! 在手机上“真机调试”才会报错!!

    2025-11-28 11:37

  • bober (作者)

    这个错误在开发者工具里正常!! 在手机上“真机调试”才会报错!! 在手机上“真机调试”才会报错!!在手机上“真机调试”才会报错!!

    2025-11-28 11:37

DCloud_UNI_JBB

DCloud_UNI_JBB

我需要修改什么?真机调试不了

  • bober (作者)

    appid我删除了~ 您那随便找个小程序的appid就行,要不也测不了

    2025-11-28 11:43

  • DCloud_UNI_JBB

    回复 bober: 我改了宿主appid为我自己的,也不行

    2025-11-28 11:44

  • bober (作者)

    开发者者工具可运行代码里的: project.config.json 和 app.json里 找到占位的“MY_APP_IDIDID”把它替换成真实微信小程序的appid就行。


    另外 两份源码里的manifest里的appid我也删掉了,您复现的话,也需要补充下~

    2025-11-28 11:46

  • bober (作者)

    回复 DCloud_UNI_JBB: 开发者工具可运行的代码里要修改appid的话,涉及两个文件,三处。 占位都是“ MY_APP_IDIDID”全局替换就行~

    2025-11-28 11:47

  • DCloud_UNI_JBB

    回复 bober: 我这边测试logo没有显示,title没显示,只显示了一个click me,目前暂不确定这个是微信小程序的bug还是uniapp的bug

    2025-11-28 11:52

  • bober (作者)

    回复 DCloud_UNI_JBB: 这说明您那边复现这个问题了~ 但是,您这边暂时也处理不了是吧?尴尬了~~

    2025-11-28 11:57

  • DCloud_UNI_JBB

    回复 bober: 我不太确定这个是谁的bug

    2025-11-28 12:55

要回复问题请先登录注册