uniapp开发:小程序分包后,主包无法调用分包页面作为组件BUG
·
BUG出现场景:
在用uniapp开发小程序的过程中,使用了分包,但是当我主包调用其中一个分包的页面作为主包的一个组件时出现了报错,报文如下:
Component is not found in path "otherPackages/pages/productfeedback/productfeedback" (using by "pages/mine/orderdetails/orderlist"), may be missing corresponding "componentPlaceholder" option?
解决过程:
首先从报文看是因为没有找到文件位置,提示缺少响应的“componentPlaceholder”,而这个字段则用于指定的站位组件

解决方案:
了解报错后,就可以开始着手解决了
第一步:
想要让分包里的页面作为组件让主包使用的话,首先要在使用页面预加载分包

代码中体现就是在pages.json文件中新增这样的字段
"preloadRule": {
//这是主包需要使用组件的页面
"pages/mine/orderdetails/orderlist": {
//这是在指定网络下预下载,可选值为:all: 不限网络 wifi: 仅wifi下预下载
"network": "all",
//进入页面后需要预下载分包的 root 或 name。
"packages": ["otherPackages"]
}
},
第二步:
然后需要在最外层配置这个组件,使得全局可以导入它
"usingComponents": {
// 注:这里的key值是在页面中调用的组件名
"product-feed-back": "/otherPackages/pages/productfeedback/productfeedback"
}
文件中体现就是这样

第三步:
配置结束后,依旧在pages.json中找到需要调用组件的页面,然后配置报文中的componentPlaceholder字段
{
"path": "pages/mine/orderdetails/orderlist",
"style": {
"navigationBarTitleText": "订单列表",
"componentPlaceholder": {
// 注:这里的key值是在页面中调用的组件名
"product-feed-back": "view"
}
}
}
添加完成之后保存,重启项目,之前的报文不在复现
备注:
第一次在开始写的时候没注意好好看文档,导致在配置和新增componentPlaceholder字段的时候key写成了我主包页面自己注册的component名,导致卡了很久。

更多推荐
所有评论(0)