2015-12-06 7 views
12

Próbuję użyć Bootstrap z jQuery. Używam Browserify z transformacją Babel do kompilacji. Otrzymuję następujący błąd.Błąd przy użyciu pakietów Bootstrap i jQuery w ES6 z Browserify

Uncaught ReferenceError: jQuery is not defined 

Próbowałem już zaimportować pakiety w ten sposób, ale otrzymałem powyższy błąd.

import $ from 'jquery'; 
import Bootstrap from 'bootstrap'; 

wyszukiwanie wokół, znalazłem this answer, więc próbowałem tego, ale wciąż ten sam błąd.

import $ from 'jquery'; 
window.$ = window.jQuery = $; 
import Bootstrap from 'bootstrap'; 
Bootstrap.$ = $; 

Czy importuję te pakiety nieprawidłowo z ES6, czy odbywa się to w inny sposób? Ostatnią rzeczą, którą próbowałem, było zaimportowanie pakietów bez takiego ES6, ale nadal mam ten sam błąd.

window.$ = window.jQuery = require('jquery'); 
var Bootstrap = require('bootstrap'); 
Bootstrap.$ = $ 
+0

Dlaczego próbujesz importować takie pliki, jakikolwiek konkretny przypadek użycia? –

+1

Importuję je, ponieważ tak działa przeglądanie. Importujesz takie pakiety, a następnie kompilujesz je w jeden plik js. – Enijar

+0

Czy znajdują się one w tym samym folderze, co plik .js, do którego je importujesz? –

Odpowiedz

3

Jak wspomniano przez Pete TNT, istnieje bug w pakiecie Bootstrap używam. Przełączyłem się na używanie this Bootstrap package i wprowadziłem następujące zmiany do mojego kodu.

window.$ = window.jQuery = require('jquery'); 
var Bootstrap = require('bootstrap-sass'); 
Bootstrap.$ = $; 
require('../../../../../node_modules/bootstrap-sass/assets/javascripts/bootstrap'); 

Wygląda na to, na chwilę obecną, ES6 import s nie będzie działać z jquery i bootstrap pakietów w sposób starałem się ich używać.

+1

FYI, mam działa z oryginalnym pakietem 'bootstrap' za pomocą' require() 'zamiast' import'. –

+0

@Enijar "Wygląda na to, że na czas importowanie ES6 nie będzie działało z pakietami jquery i bootstrap" _ Czy tak jest jeszcze w 2016 roku, ponieważ nie mogę również zaimportować 'bootstrap-saas' i jego zależności' jquery' użycie składni modułów ES6 – ira

1

@ Rozwiązanie Enijara nie działa dla mnie. Musiał użyć starej metody CDN.

<script src="https://code.jquery.com/jquery-3.1.0.min.js" 
integrity="sha256-cCueBR6CsyA4/9szpPfrX3s49M9vUU5BgtiJj06wt/s=" 
crossorigin="anonymous"></script> 

https://code.jquery.com/

10

Zaakceptowanych odpowiedź pomogła mi właściwą drogę, ale ostateczne rozwiązanie dla mnie było nieco krótsze więc będę pisać również tutaj.

// Importing jQuery in ES6 style 
import $ from "jquery"; 

// We need to expose jQuery as global variable 
window.jQuery = window.$ = $; 

// ES6 import does not work it throws error: Missing jQuery 
// using Node.js style import works without problems 
require('bootstrap'); 
+2

To rozwiązanie całkowicie mi się podoba zamiast pisać sekcję wtyczek w konfiguracji webpacka. –

1

Próbowałem wiele wiele rozwiązań, ale z jakiegoś powodu musiałem zdefiniować globalnego jquery w małymi nad scenariuszem bazowym (np. Main.js)

import jQuery from 'jquery' 
global.jQuery = jQuery 
global.jquery = jQuery // jquery lowercase was the solution for me 
global.$ = jQuery 
let Bootstrap = require('bootstrap') 
import 'bootstrap/dist/css/bootstrap.css' 

Rozwiązanie to również działa dla vue-cli + jquery + bootstrap

Powiązane problemy