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

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>
  • 总结
    不仅是组件注册,在路由等一些需要引入单页面的地方也有可能出现这个错误。总得来说还是自己对有一些方法了解不够清晰。
  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用中的解决办法可以帮助你解决这个问题。报错信息"Failed to mount component: template or render function not defined"通常是由于组件没有定义模板或渲染函数导致的。 首先,你可以检查一下在新建的组件中是否正确地定义了模板或渲染函数。确保你的组件文件中包含了正确的模板定义,比如使用了template标签,并且模板中的内容正确。 其次,你还可以检查一下在router/index.js文件中是否正确地引入了新建的组件。确保在引入组件时使用了正确的路径和文件名,并且在引入时添加了文件后缀名.vue。 最后,还要确保在新建的组件文件里添加了组件内容,即使没有具体的内容也要确保添加了该组件。这样可以避免出现该报错。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [vue 报错Failed to mount component: template or render function not defined.的解决方法](https://blog.csdn.net/to_the_Future/article/details/122973603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [解决koa2 ctx.render is not a function报错问题](https://download.csdn.net/download/weixin_38621272/12954526)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值