2012-06-07 4 views
0

Мой HTML файла: buildCheck.htmlDojo Пользовательские сборки Error

<SCRIPT src="/dojo/dojo.js"></SCRIPT> 
<SCRIPT> 
    dojo.require("dijit.form.Button"); 
    dojo.require("dijit.form.CheckBox"); 
    dojo.require("dijit.form.ComboBox"); 
    dojo.require("dijit.Dialog"); 
    dojo.require("dojo.data.ItemFileReadStore"); 
    dojo.require("my.app"); 

</SCRIPT> 

Команда:

>build.bat action=release htmlFiles=../../buildCheck1.html profile=myProfile 

Ошибка:

kwArgs.htmlFiles ../../buildCheck1.html 
release: Using profile: profiles/myProfile.profile.js 
release: Using version number: 0.0.0.dev for the release. 
release: Deleting: ../../release/dojo 
release: Copying: ../dojo/../dijit to: ../../release/dojo/dijit 
release: ********** Not Copied: ../dojo/../dijit 
release: Copying: ../dojo/../dojox to: ../../release/dojo/dojox 
release: ********** Not Copied: ../dojo/../dojox 
release: Copying: ../dojo to: ../../release/dojo/dojo 
release: ********** Not Copied: ../dojo 
release: Building dojo.js and layer files 
js: "./../../dojo/_base/_loader/loader.js", line 423: exception from uncaught Ja 
vaScript throw: Error: Could not load 'dojo.i18n'; last tried '../../release/doj 
o/dojo/i18n.js' 

Я geeting эту ошибку, если я добавляю ниже: Компонент

dojo.require("dojo.data.ItemFileReadStore") 

после удаления сборки компонент работает нормально.

В чем может быть проблема? Что я должен добавить, чтобы избежать этой ошибки?

+0

вы можете разместить содержимое MyProfile? –

+0

@CraigSwing это автогенерируется из файла buildCheck1.html. Если вам все еще нужно, он опубликует. – BOSS

+0

У меня такая же проблема. Сценарий сборки использует неправильный путь dojo, когда он хочет скопировать его в каталог выпуска. Это происходит, если в файле html содержится требование чего-либо под папкой dojo: 'dojo.require (« dojo. <*> »)'. С 'dojo.require (« dijit. <*> »)' или 'dojo.require (« dojox. <*> »)' он отлично работает. –

ответ

0

Похоже, что в точке возникновения ошибки dojo/i18n еще не построена. Мне кажется странным, что вы говорите, что это ItemFileReadStore - как замечание в dojo.data требует локализации.

Попробуйте добавить инструкцию dojo.require ("dojo.i18n"); на ваш .html выше любого dijits Reqs

+0

Я пробовал это, не работал. –

0

Я не знаю, как вы были ваши файлы организованы, но в моем случае, у меня было так:

- js 
    - dojo_require.js (the file with "dojo.require" statements, just like your "buildCheck.html") 
    - dojo-release-1.6.1-src (dojo files) 
    - dijit 
    - dojo 
    - dojox 
    - util 
     - buildscripts 
    - release 

И я столкнулся с точно такой же проблемой. Я понял, что это происходит, когда файл html содержит любой require, который загружает что-то из папки «dojo». dojo.require("dijit.<*>") в порядке, dojo.require("dojox.<*>") - это хорошо, но dojo.require("dojo.<*>") заставляет скрипт сборки использовать неправильный относительный путь к додзё. Я получаю тот же результат, как вы:

release: Deleting: ../../release/dojo 
release: Copying: ../dojo/../dijit to: ../../release/dojo/dijit 

Но я должен был получить что-то вроде Copying: ../../dojo/../dijit to: ../../release/dojo/dijit вместо этого. Один ../ отсутствовал.

Теперь это, вероятно, ошибка (я ленив, чтобы исследовать ее дальше), а так как 1.6 - довольно старая версия додзё, правильное исправление должно быть обновлено. Но так как в некоторых случаях, это просто слишком много боли, вот грязный хак, что сделало возможным для моей buildscript запуска и отделок:

В dojo-release-1.6.1-src/util/buildscripts/build.js, на линии 107, добавьте следующую строку:

prefixPath = '../' + prefixPath; 

Так что весь блок кода выглядит следующим образом:

for(var i = 0; i < prefixes.length; i++){ 
    var prefixName = prefixes[i][0]; 
    var prefixPath = prefixes[i][1]; 
    prefixPath = '../' + prefixPath; // HACK! 
    var finalPrefixPath = prefixPath; 
    if(finalPrefixPath.indexOf(".") == 0 && prefixName != "dojo"){ 
     finalPrefixPath = dojoPrefixPath + "/" + prefixPath; 
    } 
    _copyToRelease(prefixName, finalPrefixPath, kwArgs, buildLayers); 

    if(kwArgs.symbol){ 
     var releasePath = kwArgs.releaseDir + "/" + prefixName.replace(/\./g, "/"); 
     buildUtil.insertSymbols(releasePath, kwArgs); 
    } 
} 
Смежные вопросы