出现问题“vue/no-multiple-template-root”,我该如何解决?

Posted

技术标签:

【中文标题】出现问题“vue/no-multiple-template-root”,我该如何解决?【英文标题】:Problem "vue/no-multiple-template-root" occurs, how do I fix it? 【发布时间】:2021-04-12 13:23:17 【问题描述】:

编辑:不知何故做 v-if 和 v-else 语句解决了这个问题。尽管如此,有人可以解释如何解决这个问题吗?

总结:由于模板中存在 2 个元素而发生错误。这个Vue 3 The template root requires exactly one element.eslint-plugin-vue 没有帮助。我该如何解决这个问题?

我目前正在关注本教程 (https://www.youtube.com/watch?v=72Fk9i9HcZM&t=830s) 以使用 Vue 和 Firebase 创建聊天。在本教程中,有两个 div 元素的工作没有任何问题。但是,我尝试了它并且它可以工作,但是它带有红色下划线,后来我遇到了一些问题。这是所述问题的描述:

[vue/no-multiple-template-root] 模板根需要一个 element.eslint-plugin-vue

我搜索了一些解决方案,发现了这个Vue 3 The template root requires exactly one element.eslint-plugin-vue。我尝试了提供的解决方案,但没有解决问题。

这是我第一次使用 vue 和 eslint,我是编程的初学者。有人可以帮帮我吗?

【问题讨论】:

请注意,即使对于经验丰富的程序员来说,使用 Vuex 和 Firebase 构建聊天应用程序也很困难。我看到您已经为自己设置了整个开发堆栈(webpack/vue-cli/eslint),这些都是复杂的工具,需要大量时间才能真正掌握。我强烈建议在没有外部工具的情况下在常规 html 文档中使用 Vue,了解 Vue 应用程序的构建块,了解 Vue 的乐趣。祝你旅途愉快! 在 VSCode 中对我有用的是什么***.com/a/64901711/1821558 【参考方案1】:

在 Vue 2 中,模板中不允许有多个根节点。

所以这是允许的:

<template>
   <div> <!--- this is a root node -->
       <p>This is content</p>
       <p>This is more content</p>
   </div>
</template>

但这是不允许的:

<template>
   <div> <!--- this is a root node -->
       <p>This is content</p>
       <p>This is more content</p>
   </div>
   <div> <!-- error: this is a second root node -->
      <p> .... </p>
   </div>
</template>

如果你这样做,你会得到一个白屏,并且开发者控制台中的花里胡哨会响起。

但是对于具有 v-if、v-else、v-else-if 的根节点有一个例外。这背后的原因是,在评估了这些 if 语句之后,将仅安装一个节点。这可能会让新用户感到困惑。

所以,为了清楚起见,这是允许的:

<template>
   <div v-if="someExpression">
      <p>Case 1</p>
   </div>
   <div v-else-if="somethingElse">
     <p>Some other case</p>
   </div>
   <div v-else>
     <p>Else case</p>
   </div>
</template>

Vue 3 确实允许多个根节点,所以也许你的 eslint 规则仍然是 vue 2 规则。无论哪种方式。对于 Vue,建议始终将整个内容包装在标签中以确保安全。

多个根节点错误往往是由于忘记正确关闭html标签,或者使用了错误的标签。

【讨论】:

非常感谢。这解释了它【参考方案2】:

最简单和最ingenious 的方式是将所有代码包装在一个父 div 中。

`<template>
    <div class="main-div>
      *<!--------all your code should be in here------->*
    </div>
</template>`

【讨论】:

以上是关于出现问题“vue/no-multiple-template-root”,我该如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

javaEE运行中出现问题怎么解决?

DELPHI调试出现 SSOCONNECTIONLib_TLB 问题

vs2022出现错误的警告,谁能解决一下这个编译器问题(代码无问题)?

每次打开优酷会出现问题,优酷客户端我重新安装几次了 还会出现这个问题!烦死了!

Android Databinding 数据绑定中经常出现的问题

IDEA上加载gradle出现如下问题怎么解决