jquery - Laravel 5 WebPack JQuery - $ 未定义

标签 jquery laravel laravel-5 webpack laravel-5.6

我有 webpack.min.js:

mix.webpackConfig(webpack => {
    return {
        plugins: [
            new webpack.ProvidePlugin({
                $: 'jquery',
                jQuery: 'jquery',
                'window.jQuery': 'jquery',
                Popper: ['popper.js', 'default'],
            })
        ]
    };
});

mix.sass('resources/assets/styles/index.scss', 'public/css/app.css')
    .js('resources/assets/scripts/index.js', 'public/js/app.js')
    .copyDirectory('resources/assets/static', 'public/static')
    .version()
    .sourceMaps();

和package.json:

"devDependencies": {
    "jquery": "^3.3.1",
    "axios": "^0.18.0",
    "bootstrap": "^4.1.3",
    "bootstrap-datepicker": "^1.7.1",
    "browser-sync": "^2.24.6",
    "browser-sync-webpack-plugin": "^2.0.1",
    "chart.js": "^2.7.2",
    "cross-env": "^5.2.0",
    "datatables": "^1.10.18",
    "easy-pie-chart": "^2.1.7",
    "font-awesome": "4.7.0",
    "fullcalendar": "^3.9.0",
    "jquery-sparkline": "^2.4.0",
    "jvectormap": "^2.0.4",
    "laravel-mix": "^2.1.11",
    "load-google-maps-api": "^1.2.0",
    "lodash": "^4.17.10",
    "masonry-layout": "^4.2.2",
    "perfect-scrollbar": "^1.1.0",
    "popper.js": "^1.14.3",
    "skycons": "^1.0.0",
    "vue": "^2.5.16"
  }

在我的 Blade 页脚脚本中:

@section('footer')
    <script type="text/javascript">
        if (typeof jQuery != 'undefined') { alert(jQuery.fn.jquery); }

        $(function() {
        $('#cc-number').validateCreditCard(function(result) {
            $('.log').html('Card type: ' + (result.card_type == null ? '-' : result.card_type.name)
                + '<br>Valid: ' + result.valid
                + '<br>Length valid: ' + result.length_valid
                + '<br>Luhn valid: ' + result.luhn_valid);
        });
        });
    </script>
@endsection

在我运行npm run dev并加载我的页面后,我收到错误:

Uncaught ReferenceError: $ is not defined

并且我的alert(jQuery.fn.jquery);未触发

如何从 npm 加载 jquery,以便可以在 Blade 中的内联 html 代码中使用它?

最佳答案

在app.blade.php中

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

删除延迟,以便实现

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

https://github.com/laravel/framework/issues/17634#issuecomment-375473990

关于jquery - Laravel 5 WebPack JQuery - $ 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51595843/

相关文章:

javascript - jquery ui 选项卡的主要样式更改

javascript - 使用 Javascript 将行插入到 FORM 内的 HTML 表中

javascript - 刷新 div 后 CSS 样式不起作用

php - Laravel - 在导航栏上显示通知计数

php - Laravel Blade 通过@include 使用字符串传递变量会导致错误

javascript - 迭代父节点中输入的子节点

laravel - 从 vue 组件的公共(public)文件夹中导入 js 文件(Laravel)

php - Laravel,为一种方法更改模型中的连接?

php - Laravel:View::share() 和 View::composer() 之间的区别

laravel-5 - 从 PHPUnit 测试调用时,方法中无法识别命名路由