Browserify jQuery没有定义?

时间:2014-04-09 15:03:38

标签: javascript jquery twitter-bootstrap browserify

所以我知道如何手动修复此问题,但这很烦人!

我包含了bootstrap dropdown.js,并且在函数末尾是

}(jQuery);

在我的垫片中,我将jquery设置为依赖

'bootstrap': {
    "exports": 'bootstrap',
    "depends": {
        "jquery": '$'
    }
},

看起来这是使用$的唯一方法,但由于下拉列表最后有控件显示

ReferenceError: jQuery is not defined

}(jQuery);

将其更改为}($);有效。

所以我的问题是,有没有人有任何想法在没有手动操作的情况下更好地做到这一点,或者手动编辑脚本最好?

3 个答案:

答案 0 :(得分:11)

您可以使用global.jQuery = require("jquery")

这是我的垫片:

},
"plugin": {
    "exports": "plugin",
    "depends": [
        "jquery: $",
        "bootstrap: bootstrap"
    ]
}

和plugin.js内部:

var $ = require('jquery')(window);
global.jQuery = require("jquery");
var bootstrap = require('bootstrap');
var plugin = require('plugin');

plugin();

它解决了我的问题。希望能帮助到你。 :)

答案 1 :(得分:1)

<强>沉
    &#34; ./ node_modules / jquery / dist / jquery.js&#34;:{       &#34;出口&#34;:&#34; $&#34;     }

<强>需要
    var jQuery = $ = require(&#39; $&#39;);

这应该涵盖使用

的两个插件
(function($){
 $.fn.function_name = function(x){};
})($);

以及

(function($){
  $.fn.function_name = function(x){};
})(jQuery);

答案 2 :(得分:0)

我不认为我的解决方案接近最佳或理想状态并且它没有回答我的问题但是如果有人有这个问题就这样做,你可以让它工作可能作为一个临时解决方案让事情进展不要停滞在你的项目上。

大多数(如果不是全部)jQuery插件都是用这样的自调用函数编写的。

(function($){
  $.fn.function_name = function(x){};

})(jQuery);

我只是进入了插件本身并将(jQuery)更改为($)

(function($){
  $.fn.function_name = function(x){};

})($);

如果您仍然遇到问题,请确保在package.json文件中定义了一个填充程序,并且您将jQuery插件包含在require语句中。