Jon Simson
Jon Simson

Reputation: 75

laravel 9, bootstrap 5, webpack problem, can't use bootstrap-select Error: Uncaught TypeError: $(...).selectpicker is not a function

I am using laravel 9 and I try to use bootstrap-select but I have the following Error: Uncaught TypeError: $(...).selectpicker is not a function

This is my bootstap.js file:

window._ = require('lodash');

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

window.Popper = require('@popperjs/core').default;
       
require('bootstrap');

window.datepicker = require('bootstrap-datepicker');
    
window.selectpicker = require('bootstrap-select');
//require('bootstrap-datepicker');

//datatables with bootstarp5
require( 'jszip' );
require( 'pdfmake' );
require( 'datatables.net-bs5' )();
require( 'datatables.net-autofill-bs5' )();
require( 'datatables.net-buttons-bs5' )();
require( 'datatables.net-buttons/js/buttons.colVis.js' )();
require( 'datatables.net-buttons/js/buttons.html5.js' )();
require( 'datatables.net-buttons/js/buttons.print.js' )();
require( 'datatables.net-colreorder-bs5' )();
require( 'datatables.net-datetime' )();
require( 'datatables.net-fixedcolumns-bs5' )();
require( 'datatables.net-fixedheader-bs5' )();
require( 'datatables.net-keytable-bs5' )();
require( 'datatables.net-responsive-bs5' )();
require( 'datatables.net-rowgroup-bs5' )();
require( 'datatables.net-rowreorder-bs5' )();
require( 'datatables.net-scroller-bs5' )();
require( 'datatables.net-searchbuilder-bs5' )();
require( 'datatables.net-searchpanes-bs5' )();
require( 'datatables.net-select-bs5' )();
require( 'datatables.net-staterestore-bs5' )();
} catch (e) {}


/**
 * We'll load the axios HTTP library which allows us to easily issue requests
 * to our Laravel back-end. This library automatically handles sending the
 * CSRF token as a header based on the value of the "XSRF" token cookie.
 */

window.axios = require('axios');

window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

 

/**
 * Echo exposes an expressive API for subscribing to channels and listening
 * for events that are broadcast by Laravel. Echo and event broadcasting
 * allows your team to easily build robust real-time web applications.
 */

// import Echo from 'laravel-echo';

// window.Pusher = require('pusher-js');

// window.Echo = new Echo({
//     broadcaster: 'pusher',
//     key: process.env.MIX_PUSHER_APP_KEY,
//     cluster: process.env.MIX_PUSHER_APP_CLUSTER,
//     forceTLS: true
// });

and this is app.scss file:

// Fonts
@import url('https://fonts.googleapis.com/css?family=Nunito');

// Variables
@import 'variables';

// Bootstrap
@import '~bootstrap/scss/bootstrap';

// Bootstrap-select
//@import "~bootstrap-select/sass/bootstrap-select.scss";
@import "~bootstrap-select/sass/bootstrap-select";

// Datepicker
@import "~bootstrap-datepicker/dist/css/bootstrap-datepicker3.min.css";

@import "~datatables.net-bs5/css/dataTables.bootstrap5.min.css";
@import "~datatables.net-buttons-bs5/css/buttons.bootstrap5.min.css";
@import "~datatables.net-colreorder-bs5/css/colReorder.bootstrap5.min.css";
@import "~datatables.net-fixedcolumns-bs5/css/fixedColumns.bootstrap5.min.css";
@import "~datatables.net-fixedheader-bs5/css/fixedHeader.bootstrap5.min.css";
@import "~datatables.net-keytable-bs5/css/keyTable.bootstrap5.min.css";
@import "~datatables.net-responsive-bs5/css/responsive.bootstrap5.min.css";
@import "~datatables.net-rowgroup-bs5/css/rowGroup.bootstrap5.min.css";
@import "~datatables.net-rowreorder-bs5/css/rowReorder.bootstrap5.min.css";
@import "~datatables.net-scroller-bs5/css/scroller.bootstrap5.min.css";
@import "~datatables.net-searchbuilder-bs5/css/searchBuilder.bootstrap5.min.css";
@import "~datatables.net-searchpanes-bs5/css/searchPanes.bootstrap5.min.css";
@import "~datatables.net-select-bs5/css/select.bootstrap5.min.css";
@import "~datatables.net-staterestore-bs5/css/stateRestore.bootstrap5.min.css";

I tried all possible combinations, changed the order of loading libraries in bootstrap.js and had no luck.

Here are the libraries that I am using:

Any idea how to solve this?

npm list
site1@ /var/www/site1
├── @popperjs/[email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]

I just used the example from documentation:

 <select name="test" id="test" class="selectpicker" >      
    <option>Mustard</option>
    <option>Ketchup</option>
    <option>Barbecue</option>
   </select> 


$(function() {
$('.selectpicker').selectpicker();
}

I tried also [email protected], no error with this version but still select does not work, select is frozen showing only first value "Mustard".

I am stuck here.

Any ideas?

Upvotes: 2

Views: 935

Answers (0)

Related Questions