Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Dojo要求加载编号而不是模块_Javascript_Module_Dojo_Require_Dojo Build - Fatal编程技术网

Javascript Dojo要求加载编号而不是模块

Javascript Dojo要求加载编号而不是模块,javascript,module,dojo,require,dojo-build,Javascript,Module,Dojo,Require,Dojo Build,在我的dojo应用程序中,我尝试动态加载模块,该模块在构建代码之前工作正常。一旦代码是使用dojo构建系统构建的,不知何故,相同的模块作为一个整数(特别是3)加载,而不是模块本身 下面是正在运行的代码,即在构建应用程序之前 var loadModule = "MyModule.js"; var path = "./js/path/to/MyModule/"; require([path+loadModule], lang.hitch(this,function (myModule) {

在我的dojo应用程序中,我尝试动态加载模块,该模块在构建代码之前工作正常。一旦代码是使用dojo构建系统构建的,不知何故,相同的模块作为一个整数(特别是3)加载,而不是模块本身

下面是正在运行的代码,即在构建应用程序之前

var loadModule = "MyModule.js";
var path = "./js/path/to/MyModule/";
require([path+loadModule], lang.hitch(this,function (myModule) {
    //do something with myModule
   //this works without any problem
}))
现在,通过dojo构建系统得到的同一段代码变成了下面这样的代码,无法工作

var _23 = "MyModule.js";
var _24 = "./js/path/to/MyModule/";
require([_24 + _23], _2.hitch(this, function(_25) {
    //here this '_25' is number 3 instead of myModule. which i wonder why!
}))
对于dojo构建系统,我使用以下配置

layerOptimize: "shrinksafe",
optimize: "shrinksafe",
cssOptimize: "comments",
mini: true,
stripConsole: "warn",
selectorEngine: "lite",
编辑:在我的应用程序中,我尝试动态加载的模块负责处理openlayers映射。此模块的基本代码如下所示

define(["dojo/_base/declare", "dojo/_base/lang", "dojo/_base/window", "dojo/dom", "dojo/dom-construct", "dojo/topic","dojo/dom-style","dojo/on",
        "dijit/registry","dijit/Tooltip","dijit/TooltipDialog","dijit/popup","dijit/ConfirmDialog",
        "dojox/collections/Dictionary"
        ],
        function(declare, lang, baseWindow, dom, domConstruct, topic, domStyle, on,
                registry,Tooltip,TooltipDialog,dijitPopup,ConfirmDialog,
                Dictionary){

    var olMapModule = {};

    olMapModule.initMap = function(){
        //Code for openlayer go here    
    };


    olMapModule.initMapInteractions = function(){
        //code for initiating the map interactions go here
    };
    return olMapModule;
});

Edit2:逗号放错了。还有一点是,这段代码在进行dojo构建之前确实工作得很好。

在使用'require'时,尽量避免字符串连接,而不是在一个字符串中指定到modeul的路径。这将解决您的问题:

require(["./js/path/to/MyModule/MyModule.js"], lang.hitch(this,function (myModule{}));

刚试过这个,但不起作用。我仍然得到“3”而不是“myModule”@Suraj你能为你的模块发布你的问题内容吗?对不起,我没有得到你最后的评论。你的意思是,发布“myModule”的代码/内容吗?是的,如果可能的话,我们可以看看是否有任何问题。编辑问题以包含我试图加载的模块的快照,谢谢。你在同一台机器上运行生成的代码吗?我在使用Windows for dev和Linux for Build。。。这个案子有个错误。。。在同一台机器上使用小写而不是大写,尽管在同一个操作系统上,也就是说,我在开发和构建机器上都使用ubuntu。另外,构建过程是使用maven插件自动完成的,该插件将dojo构建包在其中以生成生产战。
“dojox/collections/Dictionary”
后面的额外逗号可能是原因(在IE上),但更一般地说,“3”的原因很少:请求模块时出现404,或者评估模块时出现JS错误