uni-app 微信小程序发行为混合分包后先访问混合分包的页面再访问其他分包页面时报错

uni-app 微信小程序发行为混合分包后先访问混合分包的页面再访问其他分包页面时报错

项目创建方式 CLI
CLI版本号 3.0.0-4070520250711001
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 15.5 (24F74)
第三方开发者工具版本号 1.06.2504010
基础库版本号 3.8.11

操作步骤:

预期结果:

正常不报错

实际结果:

bug描述:

cli方式新建两个项目A和B,其中B新建一个分包页面。A通过HBuilder4.75发行为微信小程序混合分包,B正常打包微信小程序,将A打包的分包集成进B中,在首页先跳转A的混合分包,返回后再跳转B自身的分包,此时报错见附件。如果先跳转B本身的分包再跳A混合分包则没有报错

Image

mp-weixin.zip


更多关于uni-app 微信小程序发行为混合分包后先访问混合分包的页面再访问其他分包页面时报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

您好,麻烦发下你用来测试两个项目的代码

更多关于uni-app 微信小程序发行为混合分包后先访问混合分包的页面再访问其他分包页面时报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


麻烦看下

uni-preset-vue-vite2 发行为微信小程序混合分包

uniapp混合分包是说官方支持你的小程序代码一部分采用原生开发,一部分采用uniapp开发,并不是你的子包中的部分内容使用uniapp开发, 这会引起主包的处理逻辑会和分包的处理逻辑执行混乱。
参考官方文档 https://uniapp.dcloud.net.cn/hybrid.html

我现在有个类似的问题,我现在用cli开发了两个项目A和B,用的是vue3cli+uniapp+pinia+uview-plus+vite,然后把这两个项目都发行为微信混合分包,然后主包用的是微信原生语法开发,现在有个问题,如果我进入A分包,点击跳转A分包的页面,是可以点击的,然后跳转到B分包,B分包页面也正常。但是回到A分包,然后只能点击跳转B分包之前的页面,如果不是跳转B之前没有点击过,则会报ctx的错误。A直接去主包页面,然后从主包返回是没有问题的。

在uni-app微信小程序混合分包场景下,先访问混合分包页面再跳转其他分包时出现报错,通常是由于分包资源加载顺序或依赖冲突导致的。根据你提供的错误信息截图(虽然无法直接查看),这类问题常见于以下原因:

  1. 分包依赖未正确预加载:微信小程序要求主包与分包、分包之间的依赖关系需在app.json中明确定义。若混合分包(项目A)的页面依赖了主包或其他分包的组件/资源,但未在preloadRule中配置预加载,可能引发运行时缺失依赖的错误。

  2. 全局组件或JS模块冲突:混合分包集成后,若项目A和项目B存在同名全局组件、工具类或Vuex模块,可能导致变量覆盖或初始化异常。检查两个项目的公共依赖(如Vuex store、自定义组件)是否兼容。

  3. 生命周期钩子执行顺序问题:混合分包页面的onLoadonShow等生命周期可能早于其他分包的初始化完成,若依赖全局状态(如Vuex),需确保状态已正确同步。

解决方案

  • 检查app.json配置:在项目B的app.json中,确认混合分包路径正确声明,并配置preloadRule预加载关键分包。例如:
    "preloadRule": {
      "pages/index/index": {
        "network": "all",
        "packages": ["__APP__", "混合分包名称"]
      }
    }
回到顶部