【问题标题】:[Vue warn]: Cannot find element: #app[Vue 警告]:找不到元素:#app
【发布时间】:2017-05-15 15:31:02
【问题描述】:

我有一个全新安装的 laravel 项目,所有组件都已更新。

我所做的只是尝试在我的welcome.blade.php 文件中添加app.js,添加以下内容后我收到此错误

[Vue 警告]:找不到元素:#app

我关注了这个帖子,但它不相关,因为我的脚本位于页面底部。 https://laracasts.com/discuss/channels/vue/fresh-laravel-setup-and-vue-2-wont-work

这是我的文件

    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>{{$project}} | {{ $title }}</title>

    <!-- Fonts -->
    <link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">

    <!-- Styles -->
    <link href="/css/app.css" rel="stylesheet" type="text/css"/>

    <style>
      ...
    </style>
    </head>
    <body class="sticky-nav">
    <div id="nav">
    <div class="display-sm">
        <header class="top-header">
            <span class="menu-icon">☰</span>
        </header>
    </div>
        <div class="custom-container">
        <div id="logo" class="float-left">
            <img alt="xyz" src="/images/xyz.png"/><span> xyz</span>
        </div>
        <div id="btn-project" class="float-right">
            <a title="project" href="#" class="btn btn-project">Project</a>
        </div>
    </div>
    </div>
    <div class="sub-container">
    <h1 id="header-title">{{ $header_title }}</h1>
    <h2 id="meta-data"><i class="fa fa"></i>{{$location}} <span id="category"> <i></i>{{$category}} </span></h2>
    <div class="clear"></div>

    </div>
    <script src="/js/app.js"></script>
    <script>
    var wrap = $(".sticky-nav");

    wrap.on("scroll", function (e) {

        if (this.scrollTop > 147) {
            wrap.find('#nav').addClass("fix-nav");
        } else {
            wrap.find('#nav').removeClass("fix-nav");
        }

        });
    </script>
    </body>
    </html>

【问题讨论】:

    标签: laravel vue.js laravel-5.3


    【解决方案1】:

    错误说明了一切。 vue找不到#app元素,所以需要添加:

    <div id='app'></div>
    

    https://vuejs.org/v2/guide/

    【讨论】:

    • 感谢您的回答。它解决了这个问题,但我想知道,我什至不打算使用 Vue 为什么要添加额外的 div?
    • @silverFoxA 如果您不想使用Vue,那么只需从您的bootstrap.js 文件中删除requirelaravel 默认会添加它。
    • 我刚刚遇到了与 OP 相同的问题,但事实证明我已经完成了这篇文章(以及链接)建议您需要做的所有事情: 1. 添加一个 id 为 2 的 div . 在 JavaScript 中引用那个 id 那么如何处理呢? Vue 在这方面并没有给出有用的错误信息。
    • 这可能与脚本的执行顺序有关。尝试将您的脚本移动到页面底部 - 在您所指的 html 之后。
    • 另外,将defer 添加到 app.js 的脚本标签对我有用。执行顺序是这里的问题。
    【解决方案2】:

    有时似乎一切正常,但我们仍然遇到相同的错误,然后您必须复制此代码并粘贴到应用程序中。刀片。

    <head>
    <!-- Scripts -->
    <script src="{{ asset('js/app.js') }}" defer></script>
    
    <!-- Fonts -->
    <link rel="dns-prefetch" href="//fonts.gstatic.com">
    <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
    
    <!-- Styles -->
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">
    </head>
    
    <body>
    <div id="app">
     .
     .
     .
     .
     .
     .
    </div>
    </body>
    

    【讨论】:

    • 在关闭 &lt;/body&gt; 标签之前移动您的 &lt;script src="{{ asset('js/app.js') }}" defer&gt;&lt;/script&gt;
    【解决方案3】:

    验证您的主设计文件 app.blade.php 是否包含一个 div,其 app id 位于 &lt;body&gt; 标记之后,如下所示:

    <body>
        <div id="app">
        .
        .
        .
        </div>
    </body>
    

    【讨论】:

      猜你喜欢
      • 2018-08-10
      • 2018-01-04
      • 2015-06-11
      • 2018-04-28
      • 2019-05-16
      • 2021-11-19
      • 2017-08-20
      • 2018-02-06
      • 2017-12-22
      相关资源
      最近更新 更多