Проблема Popper.js с модальностями Bootstrap в Laravel 5.8 - PullRequest
1 голос
/ 08 октября 2019

Я создаю веб-приложение на основе Laravel 5.8 + Laravelmix + bootstrap + Vue (именно так Lravel выходит из коробки)

Проблема в том, что модалы начальной загрузки не будут работать - не из-закоробка по крайней мере. Если вы попытаетесь запустить модальный режим, вы получите ошибку в консоли, касающуюся компонента карты поппера (необходим jquery), который есть (на самом деле), но по какой-то причине он не добавляется должным образом в микс.

Это известная проблема: я нашел другие вопросы и темы об этой проблеме в Stackoverflow, однако ...

Проблема в проблеме: все существующие QAs, которые я нашел, принимают как должное, кто читает, знает довольномного о нпм вэбпак и микс ларавеллы ... а я нет! :-( Я в основном бэкэнд-разработчик, а не разработчик внешнего интерфейса: я знаю базовый Javascript, но не очень разбираюсь в веб-пакете и не смог применить предложенные решения к своему делу.

Может ли кто-нибудь объяснить мне в ясной форме, как должны выглядеть мои js-ресурсы, чтобы они работали ???

Это мой файл webpack.mix:

const mix = require('laravel-mix');
mix.js('resources/js/app.js', 'public/js')
   .sass('resources/sass/app.scss', 'public/css');

Это мои ресурсы /Файл js / app.js:

require('./bootstrap');

window.Vue = require('vue');

Vue.component('example-component', require('./components/ExampleComponent.vue').default);

const app = new Vue({
    el: '#app',
});

Это начало моего файла resoureces / js / bootstrap.js:

window._ = require('lodash');

try {
    window.Popper = require('popper.js').default;
    window.$ = window.jQuery = require('jquery');

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

window.axios = require('axios');

И, наконец, это мой package.jsonфайл:

{
"private": true,
"scripts": {
    "dev": "npm run development",
    "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "npm run development -- --watch",
    "watch-poll": "npm run watch -- --watch-poll",
    "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
    "prod": "npm run production",
    "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
    "axios": "^0.18",
    "bootstrap": "^4.0.0",
    "cross-env": "^5.1",
    "jquery": "^3.2",
    "laravel-mix": "^4.0.7",
    "lodash": "^4.17.5",
    "popper.js": "^1.12",
    "resolve-url-loader": "2.3.1",
    "sass": "^1.20.1",
    "sass-loader": "7.*",
    "vue": "^2.5.17",
    "vue-template-compiler": "^2.6.10"
}
}
...