uni-app 在字节小程序中,包含unicloud-db的页面无法被分包 报错 编译错误 主包不能引用分包文件

uni-app 在字节小程序中,包含unicloud-db的页面无法被分包 报错 编译错误 主包不能引用分包文件

操作步骤:

直接运行项目即可

预期结果:

预期程序正常启动,结果报错。

实际结果:

编译错误 主包不能引用分包文件: pages_subPackages/test/test–unicloud-db–default–2ce4.json
at node-modules/@dcloudio/uni-cli-shared/components/unicloud-db.json

bug描述:

报错:字节小程序 编译错误 主包不能引用分包文件: pages_subPackages/test/test–unicloud-db–default–2ce4.json
at node-modules/@dcloudio/uni-cli-shared/components/unicloud-db.json
完整项目见附件. HBuilder版本3.4.6.20220420,win10系统,小程序编辑器版本信息见附件。

image
image

附件: zijie-test-fenbao.zip


更多关于uni-app 在字节小程序中,包含unicloud-db的页面无法被分包 报错 编译错误 主包不能引用分包文件的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

在 manifest.json -> mp-toutiao 添加属性 “scopedSlotsCompiler”: “augmented” 详情: https://uniapp.dcloud.io/collocation/manifest.html#mp-toutiao “mp-toutiao”: {
“scopedSlotsCompiler”: “augmented”
}

更多关于uni-app 在字节小程序中,包含unicloud-db的页面无法被分包 报错 编译错误 主包不能引用分包文件的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app 中,使用 unicloud-db 组件时,如果页面被分包,可能会遇到“主包不能引用分包文件”的编译错误。这是因为 unicloud-db 组件在编译时会被认为是主包的依赖,而主包不能直接引用分包中的文件。

解决方案

  1. unicloud-db 组件放在主包中

    • 如果可能,将包含 unicloud-db 组件的页面放在主包中,而不是分包中。这样可以避免主包引用分包文件的问题。
  2. 使用 require 动态引入

    • 如果必须将页面放在分包中,可以尝试使用 require 动态引入 unicloud-db 组件。这样可以延迟加载组件,避免编译时的依赖问题。
    export default {
      components: {
        'unicloud-db': () => require('@/components/unicloud-db/unicloud-db.vue')
      }
    }
    
  3. 检查分包配置

    • 确保 pages.json 中的分包配置正确,避免主包和分包之间的依赖冲突。
    {
      "subPackages": [
        {
          "root": "subPackageA",
          "pages": [
            {
              "path": "page1",
              "style": {}
            }
          ]
        }
      ]
    }
    
  4. 使用 uniCloud.callFunction 替代 unicloud-db

    • 如果 unicloud-db 组件导致问题,可以考虑使用 uniCloud.callFunction 来调用云函数,手动处理数据获取和渲染。
    export default {
      data() {
        return {
          dataList: []
        }
      },
      async onLoad() {
        const res = await uniCloud.callFunction({
          name: 'yourCloudFunction',
          data: {}
        });
        this.dataList = res.result;
      }
    }
回到顶部