相信做过小程序的都遇到过Component is not found in path “components/xxx/xxx“ (using by “pages/xxx/xxx“) 这个问题,一般情况的是引用路径有问题,检查代码路径改对就好了,又或者是分包影响的

先说一下我得使用场景,不一定适用于所有人,只是记录一下我遇到的

1.小程序是分包的
2.主包下有个components公用组件文件夹 (主包资源(如wxss、js、wxs、component、图片、template)是全局的, 主包和子包都能引用)
在这里插入图片描述

3.我的某个需求用到主包下面的businessmouth两个子包里的内容 (子包相当于有自己独立的作用域, 只能使用自己的或主包的资源, 不能使用其他子包的资源)
在这里插入图片描述

4.因为还有其他的业务就顺手在business里有个页面内定义了一个功能型组件A,这个Amouth里也要进行使用(因为mouth有个一模一样的页面,可能以前同事写的,根据权限写了两份),Abusinessmouth里的引用路径:/pages/business/xxx/A/index

然后在business里无异常,在mouth里报错 Component is not found in path “components/xxx/xxx” (using by “pages/xxx/xxx”) 这个问题。

5.第一时间我觉得是引用路径写错了,然后检查路径确认无误之后还是报错,就想了下它们是不是在同一个子包内,打开app.jsonsubpackages里确认了一下,是两个子包 (子包资源不能共享的)

6.然后我就将business里的功能型组件A放到主包资源components里,然后其他子包引用主包的资源就可正常使用了。

7.so,遇到Component is not found in path “components/xxx/xxx” 这个错误
大部分都是引用路径错误,或者引用不规范导致的,认真检查一下
什么引用组件的json文件的{ component: true },这是基本语法,这种就不啰嗦了。

总结:

  • 检查当前文件内组件引用路径是否正确(在语法正确的前提下)
  • 检查是否是小程序子包资源的互相引用导致(在小程序分包前提下)
  • 主包资源(如wxss、js、wxs、component、图片、template)是全局的, 主包子包都能引用(在小程序分包前提下)
  • 子包有自己独立的作用域, 只能使用自己的或主包的资源, 不能使用其他子包的资源(在小程序分包前提下)
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐