Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Jquery and Bootstrap with Es6 Import for React App

Hello I am trying to include jquery and bootstrap into a Reactjs project, but I am using es6 imports to do so. I've included the imports as shown below in my index.js file. But upon page load it gives error saying that Bootstrap's Javascript requires jquery. I've already npm installed all the required packages. How can I get jquery into my bundled and minified final script file?

import $ from 'jquery';
import '../node_modules/bootstrap/dist/css/bootstrap.min.css';
import '../node_modules/bootstrap/dist/js/bootstrap.min.js';
like image 958
David Choi Avatar asked Oct 27 '16 15:10

David Choi


5 Answers

Found the answer on this site here

Step 1: Install both jquery and bootstrap

npm install jquery bootstrap --save

Step 2: Import them in vendor.ts:

import 'jquery';
import 'bootstrap/dist/js/bootstrap';

Step 3: Go to wepback.common.js in config directory and add this inside plugin section:

plugins:[
    .....
    ..... ,
    new webpack.ProvidePlugin({   
        jQuery: 'jquery',
        $: 'jquery',
        jquery: 'jquery'
    })
]

This will let bootstrap to find jquery

As mentioned here you can not depend on ES6 respecting the order of your import statements

like image 197
David Choi Avatar answered Oct 16 '22 20:10

David Choi


For some reason jquery needs to be defined in lowercase too

import jQuery from 'jquery'
global.jQuery = jQuery
global.jquery = jQuery // jquery lowercase  was the solution
global.$ = jQuery
let Bootstrap = require('bootstrap')
import 'bootstrap/dist/css/bootstrap.css'
like image 36
Heroselohim Avatar answered Oct 16 '22 18:10

Heroselohim


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

You can use Gulp and webpack to minify your files

like image 33
Med Avatar answered Oct 16 '22 19:10

Med


Testing with this

import jquery from 'jquery'

window.jQuery = jquery

require('bootstrap')
like image 39
Christian Irack Avatar answered Oct 16 '22 20:10

Christian Irack


After import all style css file add the below code in your index.js file

window.jQuery = window.$ = require('jquery/dist/jquery.min.js');
require('bootstrap/dist/js/bootstrap.min.js');
like image 27
Parth Navadiya Avatar answered Oct 16 '22 18:10

Parth Navadiya