gpt4 book ai didi

javascript - Browserify-shim 依赖未定义?

转载 作者:行者123 更新时间:2023-11-29 10:15:26 25 4
gpt4 key购买 nike

我正在尝试将现有应用程序分解为多个模块。我选择使用 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');

当编译我的 bundle 时,Browserify 没有提示,所以一切看起来都很好。但是,在浏览器中加载我的应用程序时,我收到错误 Cannot read property 'Model' of undefined (我正在调用 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似乎向垫片表明您已经从包外部包含了库;在示例中,three.js 包含在 CDN 中。

尝试删除 global: 所以它显示为:

"Backbone": {
"exports": "Backbone",
"depends": [
"jQuery",
"lodash"
]
},

或者删除整个导出部分。 Backbone 的另一个挑战是确保你有 exposed Backbone's $ property适本地。

我自己一直在玩这个,我同意这些文档......充其量只是令人困惑。在我的例子中,我简单地使用 --save npm install Backbone 和 jQuery 并 require 这两个没有垫片(我的插件等和 jQuery 现在被垫片,但不是 Backbone 本身)。

希望这对您有所帮助!

关于javascript - Browserify-shim 依赖未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23117086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com