javascript-Browserify-shim依赖项未定义?
作者:互联网
我正在尝试将现有应用程序分解为模块.我选择使用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不会抱怨,所以一切似乎都很好.但是,在浏览器中加载我的应用程序时,我收到错误消息:无法读取未定义的属性“ Model”(我在这里调用Backbone.Model.extend()),这对我来说意义不大.
当我将“ exports”:“ global:Backbone”更改为“ exports”:“ Backbone”时,Browserify停止并显示以下消息
Error: module "Backbone" not found
我没有弄错我在做什么,我觉得Browserify-shim文档在这里没有太大帮助.他们给出了一个很好的例子,但是并没有真正解释正在发生的事情或什么会导致这种错误.谁能启发我?
解决方法:
我相信您正在使用Browserify-shim 3.0,因为您的package.json中包含配置(如果我输入错了,请纠正我).根据3.0的文档,exposing a global config似乎向shim指示您已从捆绑软件的外部包含了该库.在示例情况下,CDN中包含three.js.
尝试删除global :,结果为:
"Backbone": {
"exports": "Backbone",
"depends": [
"jQuery",
"lodash"
]
},
或放弃整个出口部分. Backbone的另一个挑战是确保您的exposed Backbone’s $property正确.
我一直在自己玩这个游戏,我同意这些文档……充其量是令人困惑的.就我而言,我只是简单地npm用–save安装Backbone和jQuery,并要求这两个都没有填充(我的插件等和jQuery现在被填充了,但是Backbone本身没有).
希望这可以帮助!
标签:browserify,javascript 来源: https://codeday.me/bug/20191029/1961599.html