我正在尝试将现有的应用程序拆分成模块。我选择使用Browserify,因为它的语法很好地模拟了NodeJS的需求。
我的项目依赖于几个外部模块,其中一个是Backbone。因此,我使用的是browserify-shim。但是,我遇到了一个问题。
在我的package.json中,我定义了以下内容:
```javascript"browserify":{
"transform": [ "browserify-shim"]},
“浏览器”:{
"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文档在这里没有多大帮助。他们给出了一个很好的例子,但并没有真正解释发生了什么,或者是什么导致了这样的错误。有谁能开导我吗?
发布于 2014-05-13 21:06:56
我相信你使用的是Browserify-Shim3.0,因为你的package.json中有配置(如果我说错了,请纠正我)。根据3.0的文档,exposing a global config似乎向填充程序表明,您已经从捆绑包外部包含库;在本例中,three.js是从CDN包含的。
尝试删除全局:因此它是这样的:
"Backbone": {
"exports": "Backbone",
"depends": [
"jQuery",
"lodash"
]
},或者可能放弃整个出口部分。Backbone的另一个挑战是确保您拥有正确的exposed Backbone's $ property。
我自己也在玩这个,我同意这些文件...充其量也就是让人困惑。在我的例子中,我简单地使用--save和jQuery来安装Backbone和jQuery,但没有填充程序(我的插件etc和plugins现在是填充的,但不是Backbone本身)。
希望这能有所帮助!
https://stackoverflow.com/questions/23117086
复制相似问题