【发布时间】:2014-04-16 18:15:03
【问题描述】:
我正在尝试将现有应用程序分解为模块。我选择使用 Browserify 来执行此操作,因为它的语法很好地模仿了 NodeJS 的要求。
我的项目依赖于几个外部模块,其中一个是 Backbone。因此,我使用的是 browserify-shim。但是,我遇到了一个问题。
在我的 package.json 中,我定义了以下内容:
```
"browserify": {
"transform": [
"browserify-shim"
]
},
"browser": {
"jQuery": "public/js/vendor/jquery-2.0.3.min.js",
"lodash": "public/js/vendor/lodash.js",
"Backbone": "public/js/vendor/backbone-1.1.2.js"
},
"browserify-shim": {
"jQuery": "global:$",
"lodash": "_",
"Backbone": {
"exports": "global:Backbone",
"depends": [
"jQuery",
"lodash"
]
},
"BackboneLocalStorage": {
"depends": [
"Backbone"
]
}
},
```
在我的一个文件中,我需要这样的 Backbone:
var Backbone = require('Backbone');
在编译我的包时,Browserify 不会抱怨,所以一切看起来都很好。但是,当在浏览器中加载我的应用程序时,我收到错误 Cannot read property 'Model' of undefined(我在那里调用 Backbone.Model.extend()),这对我来说没有多大意义。
当我将 "exports": "global:Backbone", 更改为 "exports": "Backbone", 时,Browserify 停止并显示消息
Error: module "Backbone" not found
我不明白我做错了什么,我觉得 Browserify-shim 文档在这里没有多大帮助。他们给出了一个很好的例子,但并没有真正解释发生了什么或什么会导致这样的错误。谁能赐教?
【问题讨论】:
标签: javascript browserify