3

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

不幸的是,我无法加载 select2。

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

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

未捕获的类型错误:$(...).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 副本上。

有两个版本的 jQuery 被加载。

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

似乎 node_modules 目录之外的任何内容都可能使用“浏览器”定义的模块,而 node_modules 目录中的任何内容都将使用 npm 加载的模块。

基本上,如果发生类似情况,请仔细检查您是否加载了libraryX的两个副本。

于 2015-06-10T12:20:58.547 回答