2016-10-24 1 views
0

Ich habe erfolgreich lokale Kopie von select2.js mit mehreren * .js Dateien über Webpack gebündelt. Es wird jedoch immer ein TypeError ausgelöst, der warnt, dass e.select2 keine Funktion ist. Interessanterweise funktioniert es, wenn ich die select2.js von CDN benötige, beim ersten Laden der Seite, löst aber den gleichen Fehler nach dem Aktualisieren der Seite aus.TypeError von select2 mit Webpack

Dieser Fehler ist vor dem Bündeln nie aufgetreten.

Kann jemand bitte vorschlagen? Vielen Dank!

Auf Anfrage teile ich die webpack.config.js unten.

var path = require("path"); 
var webpack = require('webpack'); 
var BundleTracker = require('webpack-bundle-tracker'); 

module.exports = { 
context: __dirname, 

entry: { 
    annotation: './assets/js/annotation_index', 
    subject: './assets/js/subject_index', 
    highchart: './assets/js/highchart_index', 
    protocol: './assets/js/protocol_index', 
    subscription: './assets/js/subscription_index' 
}, 

output: { 
    path: path.resolve('./assets/bundles/'), 
    filename: "[name].js", 
}, 

externals: [ 
    require('webpack-require-http') 
], 

plugins: [ 
    new BundleTracker({filename: './webpack-stats.json'}) 
], 

module: { 
    loaders: [ 
     { test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader', query: {compact: false} }, // to transform JSX into JS 
    ], 
}, 

resolve: { 
    modulesDirectories: ['node_modules', './assets/js/annotation'], 
    extensions: ['', '.js', '.jsx'], 
    alias: { jquery: "./jquery"} 
}, 
} 
+0

Teile deine webpack.config Datei – Thaadikkaaran

+0

@JaganathanBantheswaran ich die webpack.config Datei über nur geteilt haben. Bitte vorschlagen. Vielen Dank! – Qiao

Antwort

0

Update 1: Da OP Lasten jQuery Script-Tag verwendet, wäre die bessere Option externe Option zu verwenden, nicht die jQuery zu bündeln.

externals: { 
     "jquery": "jQuery" 
    } 

können Sie versuchen, mit ProvidePlugin und CommonsChunkPlugin Plugins

entry: { 
    vendor: ["jquery", "other lib1", 'other lib2'], 
    ... 
}, 
plugins: [ 
    new webpack.ProvidePlugin({ 
     $: "jquery", 
     jQuery: "jquery" 
    }), 
    new CommonsChunkPlugin({ 
     name: "vendor", 
     filename: "vendor.js" 
     minChunks: Infinity, 
})] 
+0

Hey @JaganathanBantheswaran, danke für deinen Vorschlag! Ich habe es versucht, aber ich hatte kein Glück. Ich habe dieses Problem schließlich gelöst, indem ich jquery im Abschnitt externals von webpack.config.js konfiguriert habe. – Qiao

+0

Gut, dass Sie das Problem gelöst haben .. Dies ist einer der Wege, wie wir jQuery Problem lösen können. – Thaadikkaaran

Verwandte Themen