3

アンパサンド js アプリで select2 バージョン 4.0 を使用しようとしています。つまり、npm と browserify を使用しています。

残念ながら、select2 をロードできません。

console.log関連する場所にいくつかのステートメントを追加してそれらの出力を確認できるため、js ファイルはエラーなしで読み込まれています。

しかし、select2 を使用しようとすると、定義されていないと言われます。

キャッチされていない TypeError: $(...).select2 は関数ではありません

これが私がやろうとしていることです。

var $ = require('jquery');
require('Select2');

$('select').select2();

select2.js https://github.com/select2/select2/blob/4.0.0/dist/js/select2.js#L14のこの行から問題が発生していると感じています

具体的にはそれが呼び出されるfactory(require('jquery'));ので、select2がjQueryのコピーにロードされ、それが破棄されると思いますか?

私はそれを動作させることができないことを除いて、同じことのように聞こえるこの問題を見つけました: npm browserify version of jquery-select2 version 4.x

4

1 に答える 1

2

したがって、私の一連の考えはほぼ正しかった - select2 を間違った jQuery のコピーにロードしていたのだ。

2 つのバージョンの jQuery がロードされていました。

browser: {"jquery: "./bower_components/.../jquery.js"}私のpackage.jsonでは、依存関係としてjQueryをリストしましたが、キーを介してjQueryのbowerバージョンにもロードしていました。

node_modules ディレクトリの外にあるものは「browser」で定義されたモジュールを使用する可能性が高いのに対し、node_modules ディレクトリ内のものは npm でロードされたモジュールを使用するようです。

基本的に、同様のことが発生した場合は、libraryXの 2 つのコピーをロードしていないことを再確認してください。

于 2015-06-10T12:20:58.547 に答える