我正在尝试在&ampersand-js应用中使用select2版本4.0 - 因此这意味着我正在使用npm和browserify。
不幸的是我无法让select2加载。
js文件正在加载而没有错误,因为我可以在相关位置添加一些console.log
语句并查看它们的输出,
但是当我尝试使用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
答案 0 :(得分:2)
所以我的思路几乎是正确的 - 它将select2加载到错误的jQuery副本上。
正在加载两个版本的jQuery。
在我的package.json中,我将jQuery列为依赖项,但是我也通过browser: {"jquery: "./bower_components/.../jquery.js"}
键加载了jQuery的bower版本。
似乎node_modules目录之外的任何内容都可能使用“browser”定义的模块,而node_modules目录中的任何内容都将使用npm加载模块。
基本上,如果出现类似情况,请仔细检查您是否未加载 libraryX 的两个副本。