编程语言
首页 > 编程语言> > javascript-Browserify-shim依赖项未定义?

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