关于Vue引入组件后报错:Failed to mount component: template or render function not defined.

本文详细解析了在Vue中遇到的Failed to mount component: template or render function not defined错误,分享了四种有效解决方法,包括使用import直接引入、箭头函数调用import、resolve参数require及require().default等技巧。
该文章已生成可运行项目,

Failed to mount component: template or render function not defined.

  • 问题描述

在引入所需组件时,出现以下错误。
错误提示
自己猜测大概率是引入名称或者是引入方式出错了。然后就开始试验,果然,问题出在组件的引入方式上了,错误代码如下:

<script>
export default {
    data() {
        return{
            list: ['Prompt'],
            text: ''
        }
    },
    components: {
        Prompt: require('@/components/news/Prompt')
    }
}
</script>

这个地方错在不能使用require()直接引入组件。

PS:平常都是import所需组件然后直接注册的,脑子一抽就想直接试试require()引入,结果就出错了。哈哈哈

  • 解决方法
    目前自己已经找到了四种解决方法,有错误或者补充,欢迎大家指出。废话不多说,看代码。
    1、直接使用import xxx from 'xxx'的方法引入组件,然后注册,如下:
<script>
import Prompt from '@/components/news/Prompt';
export default {
    data() {
        return{
            list: ['Prompt'],
            text: ''
        }
    },
    components: {
        Prompt
    }
}
</script>

2、在组件注册的地方使用箭头函数(如果使用普通匿名函数引入记得加return)调用import语句引入组件,如下:

<script>
export default {
    data() {
        return{
            list: ['Prompt'],
            text: ''
        }
    },
    components: {
        Prompt: () => import('@/components/news/Prompt')
    }
}
</script>

接下来的两种方法参考了以下文章。
“[Vue warn]: Failed to mount component: template or render function not defined”
3、在组件注册的地方使用(resolve) => require([’xxx’], resolve)的方法引入组件,如下:

<script>
export default {
    data() {
        return{
            list: ['Prompt'],
            text: ''
        }
    },
    components: {
        Prompt: resolve => require(['@/components/news/Prompt.vue'], resolve)
    }
}
</script>

4、在组件注册的地方使用require([xxx’).default的方法引入组件,如下:

<script>
export default {
    data() {
        return{
            list: ['Prompt'],
            text: ''
        }
    },
    components: {
        Prompt: require('@/components/news/Prompt.vue').default
    }
}
</script>
  • 总结
    不仅是组件注册,在路由等一些需要引入单页面的地方也有可能出现这个错误。总得来说还是自己对有一些方法了解不够清晰。
本文章已经生成可运行项目
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值