我正在修改我的应用程序以使用nodejs,并通过gulp通过browserify生成一个缩小的js。
我已经从手动加载依赖项和手动更新切换为使用npm安装它们。
一切顺利,但是当我想安装select2时,它开始到处抛出错误。当我为npm required()
文件移动了已删除的手动更新文件时。
jquery.js:3841 jQuery.Deferred异常:o(...)。select2不是函数TypeError:o(...)。select2不是函数
在i.init(https://www.example.com/newstyle/js/closure.js?time=1559747711:1:5612)处
在i.sysInit(https://www.example.com/newstyle/js/closure.js?time=1559747711:1:108153)处
在我(https://www.example.com/newstyle/js/closure.js?time=1559747711:1:106602)
在新的我(https://www.example.com/newstyle/js/closure.js?time=1559747711:1:5333)
在HTMLSelectElement处。 (https://www.example.com/newstyle/js/closure.js?time=1559747711:1:108496)
在Function.each(https://www.example.com/newstyle/js/closure.js?time=1559747711:1:200628)
位于_.fn.init.each(https://www.example.com/newstyle/js/closure.js?time=1559747711:1:199273)
在_.fn.init.d.fn。(匿名函数)[作为FormDropdownHandler](https://www.example.com/newstyle/js/closure.js?time=1559747711:1:108384)
在HTMLDocument。 (https://www.example.com/newstyle/js/closure.js?time=1559747711:1:108696)
在HTMLDocument.dispatch(https://www.example.com/newstyle/js/closure.js?time=1559747711:1:240241)上未定义dropdown.module.js:53未捕获的TypeError:o(...)。select2不是函数
在i.init中(dropdown.module.js:53)
在i.sysInit(oc.foundation.base.js:157)
在我(oc.foundation.base.js:20)
在新的我(dropdown.module.js:19)
在HTMLSelectElement处。 (oc.foundation.base.js:191)
在Function.each(jquery.js:367)
在_.fn.init.each(jquery.js:202)
在_.fn.init.d.fn。(/匿名函数)[作为FormDropdownHandler](https://www.example.com/newstyle/js/closure.js?time=1559747711:1:108384)
在HTMLDocument。 (oc.foundation.base.js:213)
在HTMLDocument.dispatch(jquery.js:5237)
我正在使用的代码是:
<select name="pickup_point">
<option value="1" >all work</option>
<option value="4" >no play</option>
<option value="5" >dull boy</option>
</select>
和javascript:
$ = require('jquery');
require('select2');
$(document).ready(function(){
$('select').select2();
});
在index.js文件中需要select2时如何使它工作?
答案 0 :(得分:0)
花点时间整理一下这里出了什么问题。
归结为Select2使用它自己的加载程序和工厂函数来初始化自身,默认情况下不会调用它。您需要手动调用它。
如果您有一个窗口对象并将jQuery注册到该窗口对象,则可以在主JavaScript文件中按一次如下所示调用Select2:
window.$ = window.jQuery = require('jquery);
require('select2')();
或者如果您更喜欢变量而不是直接在require上调用函数:
window.$ = window.jQuery = require('jquery);
var select2Initialisator = require('select2');
select2Initialisator();
如果您想使用范围或不同版本的jQuery,还可以将希望将select2注册到的jQuery实例传递给select2工厂构造函数,如下所示
var jQuery = require('jquery');
require('select2')(jQuery);