7

このエラーが発生します:Error: defineAlreadyDefined、これはdojoでのみ発生します。

index.php

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

app.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 ローダーは、requireJS と同じくらい jQuery プラグインの読み込みに優れており、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 に答える