I recently upgraded to bootstrap 5 and my tooltips/popovers in my application stopped working. I have the following error in console:
My understanding is that my Laravel Mix / webpack is failing to include popper.js in its compilation? I don’t understand why it is looking for popper.js.map, shouldn’t everything be compiled into a single file (app.js
)?
In my webpack.mix.js
I have:
JavaScript
x
5
1
const mix = require('laravel-mix');
2
3
mix.react('resources/js/app.js', 'public/js')
4
.sass('resources/sass/app.scss', 'public/css');
5
In resources/bootstrap.js
I have:
JavaScript
1
11
11
1
window._ = require('lodash');
2
3
try {
4
window.Popper = require('popper.js').default;
5
require('bootstrap');
6
} catch (e) {}
7
8
window.axios = require('axios');
9
10
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
11
and finally in resources/app.js
I have:
JavaScript
1
11
11
1
window.bootstrap = require('./bootstrap');
2
3
require('./components/Job');
4
require('./components/Toast');
5
require('./components/Proteomes/ProteomeManager');
6
7
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
8
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
9
return new window.bootstrap.Tooltip(tooltipTriggerEl)
10
})
11
I have already installed and saved bootstrap and popper via npm. Thanks!
Advertisement
Answer
in bootstrap.js
JavaScript
1
9
1
window._ = require('lodash');
2
import Popper from 'popper.js/dist/umd/popper.js';
3
4
try {
5
window.Popper = Popper;
6
window.$ = window.jQuery = require('jquery');
7
require('bootstrap');
8
} catch (e) {}
9
in webpack.mix.js
JavaScript
1
2
1
mix.js('resources/js/app.js', 'public/js').sourceMaps();
2