相信做过小程序的都遇到过Component is not found in path “components/xxx/xxx“ (using by “pages/xxx/xxx“) 这个问题,一般情况的是引用路径有问题,检查代码路径改对就好了,又或者是分包影响的
先说一下我得使用场景,不一定适用于所有人,只是记录一下我遇到的
小程序是分包的
2.主包下有个components
公用组件文件夹 (主包资源(如wxss、js、wxs、component、图片、template)是全局的, 主包和子包都能引用)
我的某个需求用到主包下面的business
和mouth
两个子包里的内容 (子包相当于有自己独立的作用域, 只能使用自己的或主包的资源, 不能使用其他子包的资源)
因为还有其他的业务就顺手在business
里有个页面内定义了一个功能型组件A
,这个A
在mouth
里也要进行使用(因为mouth
有个一模一样的页面,可能以前同事写的,根据权限写了两份),A
在business
和mouth
里的引用路径:/pages/business/xxx/A/index
。
然后在
business
里无异常,在mouth
里报错 Component is not found in path “components/xxx/xxx” (using by “pages/xxx/xxx”) 这个问题。
第一时间我觉得是引用路径
写错了,然后检查路径确认无误之后还是报错,就想了下它们是不是在同一个子包内
,打开app.json
的subpackages
里确认了一下,是两个子包 (子包资源不能共享的)
然后我就将business
里的功能型组件A
放到主包资源components
里,然后其他子包引用主包的资源就可正常使用了。
so,遇到Component is not found in path “components/xxx/xxx” 这个错误
大部分都是引用路径错误,或者引用不规范导致的,认真检查一下
什么引用组件的json文件的{ component: true },这是基本语法,这种就不啰嗦了。
总结:
- 检查当前文件内组件
引用路径是否正确
(在语法正确的前提下) - 检查是否是小程序
子包资源的互相引用导致
(在小程序分包前提下) 主包资源
(如wxss、js、wxs、component、图片、template)是全局
的,主包
和子包
都能引用(在小程序分包前提下)子包
有自己独立的作用域
, 只能使用自己
的或主包
的资源, 不能使用其他子包的资源(在小程序分包前提下)
来源地址:https://blog.csdn.net/weixin_43106777/article/details/127684123