我正在尝试在Browserify 5.9.1 中使用 Bootstrap 3.0,但遇到以下错误:
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",
...
},
...
}
需要引入 Bootstrap 的模块如下:
var $ = require('jquery');
var Backbone = require('backbone');
Backbone.$ = $;
require('../../../../bower_components/bootstrap-sass-official/assets/javascripts/bootstrap');
我不喜欢这里的两件事:
- Bootstrap是使用Bower下载的。据我所知,没有办法使用npm获取它。这使得路径非常冗长和尴尬。是否有方法使Bootstrap更加适合npm?
- Bootstrap不是此模块的直接依赖项,它是一种jQuery插件。当它加载时,它仅在文档上创建一些事件处理程序来处理Bootstarp的小部件事件。我必须进行引用,以便创建这些事件处理程序。这样做正确吗?
当然,在所有这些之后,我仍然会收到“jQuery未定义”的错误。我正在绞尽脑汁尝试让它正常工作。请帮帮我!
P.S.早些时候,我在使用grunt-browserify插件,并很快意识到它使用了没有源映射功能的browserify 4.x版本。这使得调试变得更加困难,因此我迅速将其从图中删除,并直接从npm运行browserify。