7

我收到此错误:Error: defineAlreadyDefined,仅在 dojo 中发生。

索引.php

<script data-main="app" src="require.js"></script>

应用程序.js

require({
    paths : {
        dojo : 'http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo'
    }
});

require([ 'dojo' ], function() {
   //something
});

我发现了一个类似的问题,但没有帮助我:

当通过ajax多次加载dojo.js时得到错误:defineAlreadyDefined

编辑:我进行了搜索,我认为我尝试使用 requiJS 和 Dojo 的方式是错误的。 http://dojotoolkit.org/features/1.6/async-modules

任何的想法?谢谢

4

2 回答 2

3

为了使用带有 dojo 的外部加载器,您需要跳过定义 AMD 加载器的 dojo/dojo.js 文件。您的要求配置应具有以下内容:

require({
    packages: [
        {
            name: 'dojo',
            location: 'dojo',
            main:'dojo/main' 
        }
    ]
});

然而,dojo 加载器在加载 jQuery 插件方面与 requireJS 一样出色,并且它附带了一些额外的插件,例如dojo/has. 我会认真考虑使用它的加载器。

于 2012-04-20T00:31:38.473 回答
0

我不确定你想在这里完成什么,但Dojo 实现了 requireJS。因此你不需要requireJS。

对于 Dojo 库的正常使用,您会做的是:

//call dojo script
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojo/dojo.js"></script>
<script>
    var dojoConfig = (function(){
        return {
            async: true,
            //in case you wanted to use your own library
            paths: [{
                name: "location/library"//your library path
            }]
        };
    })();       

    require([
        "dojo/parser",
        "name/something",//calling 'somethong' from library
        "dojo/domReady!"
    ], function(parser, something /*your library obj*/){
        //your logic
        parser.parse();
        something.do();
    });
});
</script>
于 2012-04-18T22:29:02.730 回答