2016-12-23 42 views
5

我已經下載了select2爲節點模塊如何將select2與webpack一起使用?</p> <pre><code>npm install select2 </code></pre> <p>在我<code>app.js</code>,其中包括它:

require('select2')($); 


當我運行 webpack沒有錯誤,但是當我打開應用程序我得到:

Uncaught TypeError: Object.defineProperty called on non-object(…) 

來自select2.js

S2.define('select2/core',[ 
    'jquery', 
    './options', 
    './utils', 
    './keys' 
], function ($, Options, Utils, KEYS) { 
(...) 
} 

是否發生,因爲對select2模塊包裹器只適用於AMD和是不符合CommonJS的?

回答

1

你在哪裏看到這是如何使用select2?就我所看到的這個項目而言,你需要安裝jquery作爲dep,但它會是automatically required

望着導出函數,它看起來像它可能需要一個jQuery元素和選項的簽名:https://github.com/select2/select2/blob/master/dist/js/select2.js#L5052

但是在導入後,它應該只被附加到jQuery的一個插件,所以我想$('.some-element').select2([options]);也可以。

那麼你只是嘗試require('select2')(和npm i jquery --save,如果你還沒有)?

+0

當然,我有jquery,我覺得這太明顯,不提這個。問題是一些jquery插件被封裝在UMD中,如果我使用AMD,CommonJS或none,它會執行一些古怪的檢查,並且此檢查會在Webpack中中斷,因爲Webpack支持兩者,所以UMD包裝器假定我使用AMD,即使使用commonJS。在接受的答案#4處有一個hacky [解決方法](http://stackoverflow.com/questions/28969861/managing-jquery-plugin-dependency-in-webpack)。 –