2016-06-06 12 views
35
import $ from 'jquery'; 
require("./node_modules/bootstrap/dist/css/bootstrap.min.css") 
require("./node_modules/bootstrap/js/dropdown.js") 
import React from 'react'; 
import ReactDOM from 'react-dom'; 
var _ = require('lodash'); 

Bitte beziehen Sie sich auf meine Einstellung. Einige Grund, warum ich habe Fehler sagen "Uncaught Reference: jQuery ist nicht definiert() von dropdown.jsWebpack mit bootstrap - jquery ist nicht definiert

Ich habe auch die folgenden Zeilen an webpack.config.js

plugins: [ 
    new webpack.NoErrorsPlugin({ 
     $: "jquery", 
     jQuery: "jquery" 
    }) 
] 

Aber nein Glück -.? jQuery undefiniert Fehler Treten immer noch Jede Idee Kann jemand dieses Problem helfen, bitte

Vielen dank

+0

https://github.com/AngarClass/angular-starter/issues/696 MurhafSousli gute Antwort – zloctb

Antwort

80

bitte webpack ProviderPlugin, verwenden Sie nicht eine gute Idee, global ist.

// webpack.config.js 
module.exports = { 
    ... 
    plugins: [ 
     new webpack.ProvidePlugin({ 
      $: "jquery", 
      jQuery: "jquery" 
     }) 
    ] 
}; 
+1

Danke. Ich habe mich nur davor bewahrt, 'window.jQuery = require ('jquery')' – Marcel

+0

zu versuchen, mehr Informationen dazu zu finden. Irgendein guter Blog? – Rohan

+2

lädt es jquery nicht überall? Gibt es eine Möglichkeit, jQuery nur einzurichten, wenn man eine 'Import'-Jquery' ausführt? –

16

Diese Arbeit wird

?!
global.jQuery = require('jquery'); 

statt

import $ from 'jquery'; 
+0

Vielen Dank @bhargavponnapalli Simply w Orks! –

+0

das ist der einzige Weg, wie ich jQuery als Abhängigkeit für Kendo UI arbeiten. Danke – mJay

+0

Hat nicht für mich gearbeitet. Das obige hat jedoch funktioniert: http: // stackoverflow.com/a/39283602/541961 – Dmitriy

17

global.jQuery nicht für mich arbeiten. Aber ich fand eine interessante Lektüre hier: http://reactkungfu.com/2015/10/integrating-jquery-chosen-with-webpack-using-imports-loader/

Die Grundidee ist es, webpacks 'importe-loader' zu verwenden. Beachten Sie jedoch, dass es nicht standardmäßig installiert ist, also zuerst installieren (npm install --save imports-loader). Und in webpack.config zu Ihrem Lader die hinzuzufügen folgende:

{ test: /bootstrap.+\.(jsx|js)$/, loader: 'imports?jQuery=jquery,$=jquery,this=>window' } 

Danach nur Import jquery und Bootstrap, oder einige andere Plugins Verlängerung auf ‚jQuery‘, wie in der Regel.

Grüße

+2

Kann bestätigen, dass dies funktioniert mit Bootstrap 3 – aphexddb

+3

Works. Aber ich musste den Loader auf "import-loader" setzen wie: {test: /bootstrap.+\.(jsx|js)$/, loader: 'imports-loader? JQuery = jquery, $ = jquery, this => window '} – Ramp

+1

Meinst du zurück zu dieser Frage oder zu etwas anderem? –

3

Damit dieser Code, den Sie arbeiten müssen NEUSTART Knoten nach der Änderung:

// webpack.config.js 
module.exports = { 
    ... 
    plugins: [ 
     new webpack.ProvidePlugin({ 
      $: "jquery", 
      jQuery: "jquery" 
     }) 
    ] 
}; 
3

Wie @Ro erwähnt vergessen Sie nicht, den Knoten Server neu zu starten, um die Änderungen der Webpack wird sonst nicht berücksichtigt.

Ich bestätige, dass, sobald diese Zeilen hinzugefügt und der Server neu gestartet wurde, der Fehler verschwindet.

Mit Bootstrap 4 eine aktualisierte Version der webpack.config.js wird so aussehen eigentlich wegen seiner Abhängigkeit mit Tether:

plugins: [ 
// ...plugins... 
new webpack.ProvidePlugin({ 
    $: "jquery", 
    jQuery: 'jquery', 
    "window.jQuery": 'jquery', 
    tether: 'tether', 
    Tether: 'tether', 
    'window.Tether': 'tether', 
}), 
] 
0

dies funktionieren wird

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

Er arbeitete für ich hoffe es hilft

Verwandte Themen