一种Vue组件引入报错解决方法

代码异常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vue.runtime.esm.js:587 [Vue warn]: Unknown custom element: <search_ui> - did you register the component correctly? For recursive components, make sure to provide the "name" option.

found in

---> <FormRenderHt> at src\components\FormRender\module\form-ht.vue
<HTUi> at src\components\FormRender\widget\element\HT.vue
<ElRow>
<ElForm> at packages/form/src/form.vue
<FormRender> at src\components\FormRender\module\form.vue
<FormRender2> at src\components\FormRender\module\form2.vue
<ProductEdit> at src\views\ordercreate\product\productInfoEdit.vue
<Index> at src\views\ordercreate\main\index.vue
<App> at src\App.vue
<Root>

原因分析

  • 组件引入方法有问题,不符合vue语法。例如 importcomponents 都需要放入引入的自定义组件。
1
2
3
4
5

import FormRenderHt from '@/components/FormRender/module/form-ht'
export default {
components: { FormRenderHt },
}
  • 组件引入方法无问题,不符合vue机制。

通过对比分析,排除第一种异常情况,聚焦在第二种情况。可能的原因出现在:

  1. 异步引入产生的组件延迟引入,一个同步异步问题。(解决,修改组件引入都为异步)
  2. 组件嵌套太多,vue本身不支持这么多嵌套。(排除,支持多级嵌套)
1
2
3
4
5
// FormRenderHt 内部存在异步组件, FormRenderHt的引入也采用懒加载引入
const FormRenderHt = () => import('@/components/FormRender/module/form-ht')
export default {
components: { FormRenderHt },
}

参考