php - Laravel 5.5 引用错误 : $ is not defined

标签 php jquery laravel laravel-5 laravel-mix

由于某种原因,我的 jQuery 拒绝加载。我收到错误:

ReferenceError: $ is not defined

我的模板位于 views/layouts/editor.blade.php 中,我正在模板的头部加载 jQuery,如下所示

<script src="{{ asset('js/jquery.min.js') }}"></script>

我可以看到 jQuery 已加载到我的控制台中。但我仍然收到错误。

我正在使用 laravel mix 编译我的 javascript,我的 webpack.mix.js 文件如下所示:

// javascript
mix.js('resources/assets/js/app.js', 'public/js')
   .js('node_modules/jquery/dist/jquery.min.js', 'public/js')
   .autoload({
        jquery: ['$', 'window.jQuery', 'jQuery'],
    });
// css
mix.sass('resources/assets/sass/app.scss', 'public/css')
   .sass('node_modules/bootstrap/scss/bootstrap.scss', 'public/css');

为什么会发生这种情况?

编辑:

我的模板文件如下所示:

<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
    <head>

        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- CSRF Token -->
        <meta name="csrf-token" content="{{ csrf_token() }}">
        <title>{{ config('app.name', 'Laravel') }}</title>
        <!-- Styles -->
        <link href="{{ asset('css/bootstrap.css') }}" rel="stylesheet">
        <link href="{{ asset('css/app.css') }}" rel="stylesheet">
        <!-- scripts -->
        <script src="{{ asset('js/jquery.min.js') }}"></script>

        <script>
            $(function(){
                alert();
            });
        </script>

    </head>
    <body>


        @yield('content')

        <!-- Scripts -->

        <script src="{{ asset('js/app.js') }}"></script>

    </body>
</html>

如果我查看控制台,我会看到以下内容

enter image description here

如果我在新选项卡中打开 jquery.min.js 文件,我会看到以下内容:

enter image description here

所以它是所有 webpack 样板内容下面的 jquery。

我还运行了 npm run production ,它删除了所有 webpack 内容并保留了原始 jquery。

最佳答案

试试这个。 在您的 View 文件中,在内容部分下创建一个部分

@section('scripts')

<script src="{{ asset('js/jquery.min.js') }}"></script>
<script>
       $(function(){
            alert();
        });
</script>
<script src="{{ asset('js/app.js') }}"></script>

@endsection

然后 @yield('scripts') 位于模板文件中的 @yield('content') 下方。 所以它看起来像

    <body>

        @yield('content')

        <!-- Scripts -->

       @yield('scripts')

    </body>

关于php - Laravel 5.5 引用错误 : $ is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46939027/

相关文章:

php - League/Flysystem fstat() 期望参数 1 为资源,给定的对象

php - htaccess 重写规则是否重定向到文件

php - 从 sql 数据库中打印,如表中所示

php - 连接到SQL的PHP​​脚本错误

php - jQuery ajax 完成并发布 php 文件?

javascript - 如何检测 $modal 中模式窗口的关闭? Angular 用户界面

laravel-8 : Why i cannot install Laravel/Breeze

javascript - 如何使用从单选按钮在页面中选择的数据从 HTML 页面发送电子邮件?

javascript - Bootstrap 组合框并在键入后选择值

php - 从我的数组树中添加前缀 '>'