【问题标题】:Browserify bundle undefined dependencyBrowserify 捆绑未定义的依赖项
【发布时间】:2015-05-05 12:33:46
【问题描述】:

我在 Backbone 项目中使用 browserify 并填充 owlCarousel 因为它不是 commonJS 之类的模块。 shim 转换似乎有效,但在我真正需要的时候无效。

我的app.js 文件如下所示:

var settingsView = require("./settingsView.js");

new settingsView();

还有我的settingsView

var app = require("./controllers.js"),
    $ = require("jQuery"),
    Backbone = require("Backbone"),
    owlCarousel = require("owlCarousel");
    Backbone.$ = $;

module.exports = Backbone.View.extend({
   el: ".settings",

   events: {
    "click .carousel-img": "setBackground",
    "click .palette div": "setTextColor"
   },

   options: {
    singleItem: true,
    pagination: false,
    navigation: true,
    mouseDrag: false
   },

   initialize: function () {
     this.initCarousel();
   },

   initCarousel: function () {
     /* This is causing the problem */
      this.owlCarousel = this.$el.find(".carousel").owlCarousel(this.options);
   }
})

我的package.json在哪里

"browser": {
    "jquery": "./node_modules/jquery/dist/jquery.js",
    "owlCarousel": "./vendor/owl-carousel/owl-carousel/owl.carousel.js"
   },
   "browserify": {
    "transform": [
      "browserify-shim"
    ]
   },
   "browserify-shim": {
    "jquery": "$",
    "owlCarousel": {
      "depends": ["jquery:$"]
    }
   }

它给我的错误:

未捕获的类型错误:this.$el.find(...).owlCarousel 不是函数

在运行时。但是,如果我在 dom 准备好后在控制台中运行$("div").owlCarousel,它就可以工作。

【问题讨论】:

  • 您正在从您的视图的initialize 调用initCarousel,但在那个阶段实际上还没有渲染任何内容。将调用 initCarousel 移到视图渲染后。
  • 视图已经在html中
  • 我的错,我想你只是为了简洁而放弃了你的 render 功能。
  • 我的错,我没有指定它eheh

标签: javascript backbone.js browserify browserify-shim


【解决方案1】:

我解决了

var app = require("./controllers.js"),
    $ = require("jQuery"),
    Backbone = require("Backbone"),
    owlCarousel = require("owlCarousel");
    Backbone.$ = $;    
    $.fn.owlCarousel = owlCarousel

【讨论】:

    猜你喜欢
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 2015-10-04
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    相关资源
    最近更新 更多