将 select2 4.0 版与 NPM 和 browserify 结合使用

Use select2 version 4.0 with NPM and browserify

我正在尝试在 &-js 应用程序中使用 select2 版本 4.0 - 因此这意味着我正在使用 npm 和 browserify。

不幸的是我无法加载 select2。

正在加载js文件,没有错误,因为我可以在相关地方添加一些console.log语句并查看它们的输出,

但是当我尝试使用 select2 时,我被告知它没有定义。

Uncaught TypeError: $(...).select2 is not a function

这是我正在尝试做的事情。

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

所以我的思路几乎是正确的——它是将 select2 加载到 jQuery 的错误副本上。

正在加载 jQuery 的两个版本。

在我的 package.json 中,我将 jQuery 列为依赖项,但是我还通过 browser: {"jquery: "./bower_components/.../jquery.js"} 键加载了 jQuery 的 bower 版本。

似乎 node_modules 目录外的任何东西都可能使用 "browser" 定义的模块,而 node_modules 目录内的任何东西都将使用 npm 加载的模块。

基本上,如果发生类似的事情,请仔细检查您是否加载了 libraryX.

的两个副本