2016-12-23 7 views
5

私は、ノードモジュールとしてselect2をダウンロードした:web2でselect2を使うには?

npm install select2 

、私のapp.jsでそれを含める:

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を使用していない場合、あるいはWebpackがこの両方をサポートしているためです。UMDラッパーはcommonJSを使用してもAMDを使用すると仮定します。 #4で受け入れられた答えで、このためのハックアップ[回避策](http://stackoverflow.com/questions/28969861/managing-jquery-plugin-dependency-in-webpack)があります。 –

関連する問題