2010-09-20 13 views
5

Ma question, tout d'abord quelque peu similaire à this one, semble être une question plus fondamentale - et pourrait signaler un bug dans le système de construction. J'ai créé une construction personnalisée pour mon application dojo. Je construis une seule couche en ce moment, voici ce que le script de profil/objet ressemble à:Dojo Construire avec NLS - requireLocalization (..) échouer?

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" ] 
    ] 
} 

Quand je lance une version avec cette description, il génère des fichiers dans la structure de répertoire suivant:

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 

Enfin , dans ma page HTML de test - j'ai les suivantes:

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

Mais malheureusement, Firebug crache ceci me:

Bundle not found: MyWidget in myPackage , locale=en-us 

Ce que je pense qui se passe

J'ai retracé à travers une partie du code menant à l'erreur ci-dessus et il semble que l'appel dojo.i18n._preloadLocalizations() à la fin du fichier ne se charge pas réellement dans le bon fichier nls de ./release/nls.

Une idée de la façon de résoudre ce problème sans avoir à utiliser manuellement les fichiers nls avec <script> tags?

+0

J'ai rencontré des problèmes similaires. Ce n'est pas clair pour moi s'il y a un problème dans le système de construction ou le chargeur. J'ai déterminé cela si j'ai nommé mon fichier de couche pour être dans le même répertoire que dojo.js (c'est-à-dire, faites-le "name: 'myProject.js'") et ajustez le tag de script pour utiliser ce chemin (./release/ myProject/dojo/myProject.js.uncompressed.js), le chargeur extrait les fichiers nls corrects. – tommyjr

+0

Je suppose que cela a à voir avec votre modulePaths dans l'objet djConfig. Si vous regardez firebug ou similaire, quelle URL est l'application qui essaie de charger le nls de vs où devrait-il le charger? –

Répondre