【问题标题】:Sticky is not defined using Laravel Mix粘性不是使用 Laravel Mix 定义的
【发布时间】:2019-11-21 17:01:52
【问题描述】:

尝试使用 Laravel Mix 为我的应用程序包含 node_modules。这方面经验不是很丰富

我正在尝试包含sticky.js,但在控制台中不断收到消息:

Uncaught ReferenceError: Sticky is not defined

这是我的 webpack 文件:

const mix = require('laravel-mix');

mix.js('resources/js/vendor.js', 'public/js')
.combine([
  'resources/js/appOptions.js',
  'resources/js/scripts.bundle.js',
], 'public/js/scripts.bundle.js')
.copy('resources/js/pages/*.js', 'public/js/pages')
.copy('resources/js/plugins/', 'public/js/plugins')
.sass('resources/sass/vendor.scss', 'public/css/')
.copy('resources/css/style.bundle.css', 'public/css')
.copy('resources/css/app.css', 'public/css')
.copy('resources/css/pages/*.css', 'public/css/pages')
.webpackConfig({
    resolve: {
      modules: [
        'node_modules'
      ],
      alias: {
        jquery: 'jquery/src/jquery'
      }
    }
});

if (mix.inProduction()) {
    mix.version();
    mix.disableNotifications();
}

我的 vendor.js 文件:

import 'bootstrap';
import 'sticky-js';
import 'moment';
import 'moment-timezone';
import 'jquery-validation';

还有scripts.blade.php文件在其他刀片文件中调用:

<script src="{{ mix('/js/vendor.js') }}"></script>
<script src="{{ mix('/js/scripts.bundle.js') }}"></script>

我检查了 jQuery 是否正在加载,并且看起来是,因为我还收到以下消息:

jQuery.Deferred 异常:未定义 Sticky ReferenceError:未定义 Sticky

我们将不胜感激。

【问题讨论】:

    标签: npm webpack laravel-mix


    【解决方案1】:

    尝试将其分配给如下全局对象:

    window.Sticky = require('sticky-js');
    

    PS: 我没有看到您的供应商中包含任何 jQuery。尝试将此添加到您的 vendor.js

    window.$ = window.jQuery = require('jquery');
    

    确保在 package.json 中包含 jquery 和 sticky 作为依赖项。

    【讨论】:

    • 在我发布这篇文章 15 分钟后,我实际上最终做了这两件事。即使它有效,很高兴知道我也做对了。谢谢!
    • @SeánMcCabe 太棒了!
    猜你喜欢
    • 2019-05-30
    • 2019-06-28
    • 2018-03-14
    • 2022-01-25
    • 2018-03-20
    • 2018-04-02
    • 2018-11-02
    • 2018-07-02
    • 2015-09-01
    相关资源
    最近更新 更多