Meine Frage, die zunächst etwas ähnlich zu this one ist, scheint eine grundlegendere Frage zu sein - und könnte einen Fehler im Build-System signalisieren. Ich habe einen benutzerdefinierten Build für meine Dojo-Anwendung erstellt. Ich baue nur eine Schicht gerade jetzt, hier ist es, was das Profil Skript/Objekt wie folgt aussieht:Dojo Build mit NLS - requireLocalization (..) fehlgeschlagen?
dependencies = {
stripConsole: "all",
action: "release",
optimize: "shrinksafe",
releaseName: "myProject",
// list of locales we want to expose
localeList: "en-gb,en-us,de-de",
layers: [
{
// Name: a relative path from the dojo.js in the desination directory.
name: "../../myProject.js",
dependencies: [
"myPackage.MyDataStore",
// MyWidget depends on a few other widgets, and has its own
// translation files.
"myPackage.MyWidget"
]
}
],
prefixes: [
// These paths are relative to the location of dojo.js
[ "dijit", "../dijit" ],
[ "dojox", "../dojox" ],
[ "myPackage", "../../../src/myPackage" ]
]
}
Wenn ich einen Build mit dieser Beschreibung ausgeführt es gibt Dateien in der folgenden Verzeichnisstruktur:
release/
release/myProject/
release/myProject/dijit/
... dijit ...
release/myProject/dojo/
... dojo ...
release/myProject/dojox/
... dojox ...
release/myProject/myPackage/
... my custom package ...
release/nls/
myProject_en-us.js
myProject_de.js
etc..
../myproject.js
../myProject.js.uncompressed.js
Schließlich , in meinem Test-HTML-Seite - ich habe folgendes bekam:
<script type="text/javascript">
var djConfig = {
debug: true,
parseOnLoad: false,
modulePaths: { // paths to directories in relation to dojo's location.... hurr.
'myPackage': '../myPackage',
'dojox': '../dojox',
'dijit': '../dijit'
}
};
</script>
<script type="text/javascript" src="./release/myProject/dojo/dojo.js.uncompressed.js"></script>
<script type="text/javascript" src="./release/myProject.js.uncompressed.js"></script>
<script type="text/javascript">
dojo.addOnLoad(function(){
dojo.require('myPackage.MyDataStore');
dojo.require('myPackage.MyWidget');
var store = new myPackage.MyDataStore();
var widget = new myPackage.MyWidget({
store: store
}, dojo.byId('testWidget'));
widget.startup();
});
</script>
Aber leider Firebug spuckt das bei mir aus:
Bundle not found: MyWidget in myPackage , locale=en-us
Was ich denke, ist Happening
ich durch einen Teil des Codes verfolgt haben zu dem obigen Fehler führt und dass es scheint, wie der dojo.i18n._preloadLocalizations()
Anruf am Ende der Datei lädt nicht wirklich in den richtigen Nls-Datei von ./release/nls
.
Haben Sie eine Idee, wie Sie dies beheben können, ohne die nls-Dateien mit <script>
Tags manuell einzuschließen?
Ich habe ähnliche Probleme festgestellt. Es ist mir nicht klar, ob ein Problem im Build-System oder im Loader vorliegt. Ich habe festgestellt, dass, wenn ich meine Layer-Datei im selben Verzeichnis wie dojo.js benannt habe (das heißt, mache es "name: 'myProject.js'") und passe das Script-Tag an, um diesen Pfad zu verwenden (./release/ myProject/dojo/myProject.js.uncompressed.js), dann zieht der Loader die korrekten nls-Dateien ein. – tommyjr
Ich vermute, dass dies mit Ihren modulPfads im djConfig-Objekt zu tun hat. Wenn du dir Firefebug oder ähnliches anschaust, welche URL versucht die App die nls von vs zu laden, wo sollte sie geladen werden? –