Browserify jQuery没有定义?

Mic*_*bry 9 javascript jquery twitter-bootstrap browserify

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

我包括bootstrap dropdown.js,并在函数的末尾

}(jQuery);

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

'bootstrap': {
    "exports": 'bootstrap',
    "depends": {
        "jquery": '$'
    }
},
Run Code Online (Sandbox Code Playgroud)

看起来这是唯一可以使用的方法$,但是由于下拉列表在控制台显示的末尾有jQuery

ReferenceError: jQuery is not defined

}(jQuery);
Run Code Online (Sandbox Code Playgroud)

将其改为}($);工作.

所以我的问题是,有没有人有任何想法更好地做到这一点,而无需手动执行,或手动编辑脚本最好?

小智 11

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

这是我的垫片:

},
"plugin": {
    "exports": "plugin",
    "depends": [
        "jquery: $",
        "bootstrap: bootstrap"
    ]
}
Run Code Online (Sandbox Code Playgroud)

和plugin.js里面:

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

plugin();
Run Code Online (Sandbox Code Playgroud)

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


Mic*_*bry 0

我不认为我的解决方案接近最佳或理想,它没有回答我的问题,但如果有人遇到这个问题,就这样做,你可以让它工作,可能作为一个临时解决方案,让事情顺利进行,而不会停滞不前你的项目。

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

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

})(jQuery);
Run Code Online (Sandbox Code Playgroud)

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

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

})($);
Run Code Online (Sandbox Code Playgroud)

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