2016-08-25 4 views
1

В моем приложении dojo я пытаюсь динамически загружать модуль, который отлично работает, пока я не создам свой код. Как только код создается с использованием системы сборки dojo, как-то один и тот же модуль загружается как межсетевой (а именно 3), а не сам модуль.Dojo требуется загружать номер вместо модуля

Ниже приведен код, который работает т.е. перед созданием приложения

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 
})) 

Теперь тот же кусок кода, когда пришел через систему додзё сборки становится чем-то, как показано ниже, и не работает

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! 
})) 

Для системы додзё сборки я использую следующие конфигурации

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; 
}); 

Редактировать: запятая была помещена по ошибке. Также дело в том, что этот фрагмент кода отлично работает, прежде чем идти через сборку dojo.

+0

Вы используете встроенный код на том же компьютере? У меня было это при использовании Windows для dev и Linux для построения ... В этом случае была ошибка ... Нижний регистр вместо верхнего – ben

+0

Не на одной машине, хотя на одном и том же os, т. Е. Я использую ubuntu для dev, а также на машине для сборки. Также процесс сборки автоматизирован с использованием плагина maven, который завершает создание додзё в нем для создания производственной войны. – Suraj

+0

Дополнительная запятая после '' dojox/collections/Dictionary ",' может быть причиной (в IE), но в целом у «3» есть несколько причин: 404 при запросе модуля или ошибки JS при оценке модуля – ben

ответ

0

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

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

Just пробовал это, но не работал. Я все еще получаю «3» вместо «myModule» – Suraj

+0

@Suraj вы можете разместить на своем вопросном материале для своего модуля? – GibboK

+0

извините, но я не получил ваш последний комментарий. Вы имели в виду, укажите код/​​содержание 'myModule'? – Suraj