由于某种原因,我的 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>
如果我查看控制台,我会看到以下内容
如果我在新选项卡中打开 jquery.min.js 文件,我会看到以下内容:
所以它是所有 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/