我试图使用Bootstrap 3.0与Browserify 5.9.1,但得到以下错误:
Uncaught ReferenceError: jQuery is not defined
什么是正确的方法这样做?
这是我的package.json的相关部分:
{ ... "scripts": { "bundle": "browserify main.js -o bundle.js --debug --list" },"dependencies": { "backbone": "~1.1.x","jquery": "~2.1.x","underscore": "~1.6.x" },"devDependencies": { "browserify": "^5.9.1",... },... }
需要引导的模块如下所示:
var $ = require('jquery'); var Backbone = require('backbone'); Backbone.$ = $; require('../../../../bower_components/bootstrap-sass-official/assets/javascripts/bootstrap');
我不喜欢的两件事是:
Bootstrap使用Bower下载。 AFAIK没有办法使用npm。这使得路径非常长而尴尬。有没有办法让Bootstrap npm友好?
Bootstrap不是这个模块的直接依赖,它是一种jQuery插件。当它被加载时,它只是在文档上创建一些事件处理程序来处理来自Bootstarp的小部件的事件。我必须要求这些事件处理程序被创建。这是正确的方法吗?
当然毕竟这样,我还是得到“jQuery没有定义”的错误。我拉我的头发试图让这个工作。请帮忙!
美国早些时候,我在图片中安装了grunt-browserify插件,并很快意识到它使用的是browserify 4.x版,没有源地图功能。这使得它更难调试,所以我很快把它从图片中,直接从npm浏览。
解决方法
当我在browserify中使用引导时,这对我有用:
window.$ = window.jQuery = require('jquery') var Backbone = require('backbone'); Backbone.$ = $; require('../../../../bower_components/bootstrap-sass-official/assets/javascripts/bootstrap');