Dojo требует номер загрузки вместо модуля

В моем приложении 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.

1 ответ

Старайтесь избегать конкатенации строк при использовании `require``instead, указывайте в одной строке путь к вашему модулю. Это должно решить вашу проблему:

require(["./js/path/to/MyModule/MyModule.js"], lang.hitch(this,function (myModule{}));
Другие вопросы по тегам