错误:defineAlreadyDefined

Posted

技术标签:

【中文标题】错误:defineAlreadyDefined【英文标题】:Error: defineAlreadyDefined 【发布时间】:2012-04-18 17:12:13 【问题描述】:

我收到此错误: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
);

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

When dojo.js loaded via ajax multiple times get Error: defineAlreadyDefined

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

有什么想法吗?谢谢

【问题讨论】:

【参考方案1】:

要使用带有 dojo 的外部加载器,您需要跳过定义 AMD 加载器的 dojo/dojo.js 文件。你的 require 配置应该是这样的:

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

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

【讨论】:

【参考方案2】:

我不确定你想在这里完成什么,但Dojo implements 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>

【讨论】:

之所以喜欢requireJS是因为我有很多jquery插件,还有dojo。

以上是关于错误:defineAlreadyDefined的主要内容,如果未能解决你的问题,请参考以下文章

Informix 错误:发生了语法错误。错误代码:-201

我收到一个错误:“MetaMask - RPC 错误:错误:错误:[ethjs-rpc] rpc 错误与有效负载”

错误精灵错误跟踪器错误

网页打开显示错误500是啥意思

PHP错误处理

PHP的错误处理