Laravel Mix Webpack - Bootstrap 4.1 связывает API со скрытым jQuery - PullRequest
0 голосов
/ 25 мая 2018

Я использую Laravel Mix в своем проекте и использую Bootstrap 4.1.1.Использование следующего кода для загрузки библиотек:

bootstrap.js (изначально сгенерированный проектом Laravel для загрузки библиотек)

//...
try {
    window.$ = window.jQuery = require('jquery/dist/jquery.min');

    require('bootstrap');
} catch (e) {
    console.log(e);
}
//...

Итак, я просто попытался запустить модальное и нашел это: VM3990:1 Uncaught TypeError: $(...).modal is not a function.Затем я проверил window.$.fn и не могу найти никаких функций, определенных Bootstrap.

Любопытно, что затем я перехожу к использованию точек останова для отладки упакованного файла JS.А в разделе, когда Bootstrap импортируется / требуется, этот экземпляр $$$1 (локальная ссылка на jQuery) содержал все методы.Пожалуйста, смотрите следующее изображение:

enter image description here

Я подозревал, что Bootstrap загрузил отдельный экземпляр jQuery, и я обнаружил, что это правда.И этот экземпляр jQuery загружается с isGlobal == false, поэтому он не подвергается window как $ / jQuery.Когда я удалил строку, я загружаю свой jQuery, Bootstrap все еще загружен, и раскрывающиеся списки все еще могут использоваться, если они не вызваны моим кодом.

enter image description here

Стрелка на изображении указывает на часть jQuery в файле.

Я не очень хорошо знаю веб-пакет, но кто-нибудь сталкивался с этой проблемой раньше?Я только начинаю изучать, как использовать это и модули, поэтому я могу делать то, что не должен делать.

1 Ответ

0 голосов
/ 25 мая 2018

Отредактируйте /resources/assets/js/boostrap.js:

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

    require('bootstrap');
} catch (e) {}

, для этого потребуется модуль jquery из папки node_modules.

...