[Vue warn]:找不到元素

[Vue warn]: Cannot find element

本文关键字:找不到 元素 Vue warn      更新时间:2023-09-26

我正在使用Vuejs。这是我的标记:

<body>
  <div id="main">
    <div id="mainActivity" v-component="{{currentActivity}}" class="activity"></div>
  </div>
</body>

这是我的代码:

var main = new Vue({
    el: '#main',
    data: {
        currentActivity: 'home'
    }
})
;

当我加载页面时,我会收到以下警告:

[Vue warn]: Cannot find element: #main

我做错了什么?

我认为问题是在将目标dom元素加载到dom之前执行了脚本。。。其中一个原因可能是您将脚本放置在页面的头部或放置在div元素#main之前的脚本标记中。因此,当脚本被执行时,它将无法找到目标元素,从而导致错误。

一种解决方案是将脚本放在类似的加载事件处理程序中

window.onload = function () {
    var main = new Vue({
        el: '#main',
        data: {
            currentActivity: 'home'
        }
    });
}

另一种语法

window.addEventListener('load', function () {
    //your script
})

我通过在"script"元素中添加属性"defer"解决了这个问题。

我得到了同样的错误。解决方案是将脚本代码放在正文末尾之前,而不是放在头部分。

简单的事情是将脚本放在文档下面,就在关闭</body>标记之前:

<body>
   <div id="main">
      <div id="mainActivity" v-component="{{currentActivity}}" class="activity"></div>
   </div>
   <script src="app.js"></script>
</body>

app.js文件:

var main = new Vue({
    el: '#main',
    data: {
        currentActivity: 'home'
    }
});

您可以用两种方法来解决它。

  1. 确保您将CDN放入html页面的末尾,然后放置您自己的脚本。示例:
    <body>
      <div id="main">
        <div id="mainActivity" v-component="{{currentActivity}}" class="activity"></div>
      </div>
    </body>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.11"></script>
    <script src="js/app.js"></script>

您需要将您在任何其他javascript文件或html文件中编写的相同javascript代码放在其中。

  1. 在JavaScript文件中使用window.onload函数

我认为有时愚蠢的错误会给我们带来这种错误。

<div id="#main"> <--- id with hashtag
    <div id="mainActivity" v-component="{{currentActivity}}" class="activity"></div>
</div>

<div id="main"> <--- id without hashtag
    <div id="mainActivity" v-component="{{currentActivity}}" class="activity"></div>
</div>