【问题标题】:No define call function in Require.jsRequire.js 中没有定义调用函数
【发布时间】:2014-02-16 05:28:43
【问题描述】:

我在骨干项目中使用 Require.js 加载 jquery-menu-aimbootstrap 时出错。

这是我在 main.js 中定义的:

requirejs.config({
    enforceDefine: true,
    paths: {
      //declare path jquery, backbone, underscore,and other library here....
      "jquery-menu-aim" : "libs/jquery/jquery.menu-aim",
      "bootstrap" : "libs/jquery/bootstrap.min"
    },
    shim: {
      "jquery-menu-aim" : {
        deps: ["jquery"] ,
        exports: "Jquerymenuaim"
       },
       "bootstrap" : {
        deps: ["jquery"] ,
        exports: "Bootstrap"
      }
   }
});

错误:未捕获的错误:没有为 jquery-menu-aim 定义调用 http://requirejs.org/docs/errors.html#nodefinerequire.js:8 未捕获的错误:没有定义引导程序调用 http://requirejs.org/docs/errors.html#nodefine

当我在我的视图中定义它时。我想我在 Shim 配置中定义库时可能是错误的,但我在 google 中找不到它。

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: javascript jquery twitter-bootstrap backbone.js requirejs


    【解决方案1】:

    您的 Bootstrap 填充程序肯定是错误的,因为 Bootstrap 没有定义名为 Bootstrap 的符号。这是我使用的:

    bootstrap: {
      deps: ["jquery"],
      exports: "jQuery.fn.popover"
    },
    

    jQuery.fn.popover 方法是 Bootstrap 定义的。如果在 RequireJS 加载 Bootstrap 后它不存在,则说明 Bootstrap 没有加载。

    您的 jquery.menu-aim 垫片同样是错误的。查看the code,我看到它是一个jQuery 插件。您应该更改 shim 以检查它添加到 jQuery 的功能。 jQuery.fn.menuAim 看起来是个不错的候选人。

    【讨论】:

    • 效果很好,谢谢路易斯。但是你怎么知道引导导出是 jQuery.fn.popover?
    • 我已经阅读了 Bootstrap 的代码。另一种解决方法是阅读文档并选择您正在使用的插件(Bootstrap 充当插件)可用的方法。因此,如果文档说插件提供了一个名为jQuery.foo 的新方法,您需要检查jQuery.fn.foo.fn 是必要的,因为这是存储 jQuery 对象上可用的方法的地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多