2

我遇到了很多麻烦RequireJS,只需使用define模块就会出错。

假设我有这个配置:

require.config({
    baseUrl: "js/",
    paths: {
        jquery: "libs/jquery/jquery-2.0.2.min",
        handlebars: "libs/backbone/template/handlebars",
        lodash: "libs/backbone/template/lodash.min",
        backbone: "libs/backbone/backbone-1.0.0.min",
        helper:"app/helper",
        jquery_cookie:"libs/jquery/plugin/jquery.cookie",
        text:"libs/require/text-2.0.7"
    },
    shim: {
        "lodash": {
            exports: '_'
        },
        "handlebars": {
            deps:["jquery"],
            exports: 'Handlebars'
        },
        "backbone": {
            deps: ["helper", "lodash", "handlebars", "jquery"],
            exports: "Backbone"
        }
    },
    urlArgs: "bust=" + (new Date()).getTime()
});


define(["jquery"], function ($) {
    console.log('define "jquery" on config.js');
    return $;
});
console.log("end config.js");

首先,我尝试了经典方式,我已经加载了一个config文件,其中包含我的文件的所有依赖项JavaScript,我正在使用jQueryBackbone其他库。

<script type="text/javascript" data-main="config" src="js/libs/require/require-2.1.6.min.js"></script>
<script type="text/javascript">
    require(["jquery"], function ($) {
        console.log("jquery loaded");
    });
</script>

使用此配置,我得到这些错误和日志序列:

Uncaught Error: Mismatched anonymous define() module: function (){return r}
 > http://requirejs.org/docs/errors.html#mismatch 
end config.js
define "jquery" on config.js

似乎错误与函数有关require.config(...);

我认为这是一个负载问题,所以我尝试使用RequireJS 站点require中描述的 var而没有解决它。

荒谬的是,我正在Backbone使用相同配置内置的全屏应用程序而没有遇到任何问题,在这里我需要使用不同的视图进行更多工作,我无法开始,基本上整个区别都在这里我正在使用CakePHP

为什么这不起作用,我错在哪里?

4

1 回答 1

2

您使用的 jQuery 版本已经支持 AMD。所以你不必为此使用垫片。您可以直接给出路径并开始使用它。

由于该模块已在 jQuery 库中定义,因此当您尝试重新定义它时会引发错误。下面的代码尝试定义一个匿名模块。

define(["jquery"], function ($) {
     console.log('define "jquery" on config.js');
     return $;
});

删除上面的代码,应该可以正常工作。以下代码使用 require 方法加载 jquery 模块。

require(["jquery"], function ($) {
     console.log($(document));
});

希望这有效。

于 2013-06-27T05:38:01.357 回答