2010-09-20 12 views
5

Mi pregunta, aunque al principio es algo similar a this one, parece ser una pregunta más básica, y podría estar indicando un error en el sistema de compilación. Creé una compilación personalizada para mi aplicación dojo. Sólo construir una capa en este momento, esto es lo que el script de perfil/objeto se parece a:Dojo Build with NLS - requireLocalization (..) ¿falla?

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

Cuando ejecuto una acumulación con esa descripción, se da salida a los archivos de la siguiente estructura de directorios:

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 

último , en mi página HTML de prueba - tengo el siguiente:

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

Pero, por desgracia, Firebug escupe esto a mí:

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

Lo que creemos que está pasando

he rastreado a través de una parte del código que lleva hasta el error anterior y parece que la llamada dojo.i18n._preloadLocalizations() al final del archivo en realidad no cargar en el correcto archivo nls desde ./release/nls.

¿Alguna idea de cómo solucionar esto sin recurrir a incluir manualmente los archivos nls con las etiquetas <script>?

+0

me he encontrado con problemas similares. No tengo claro si hay un problema en el sistema de compilación o en el cargador. Decidí que si nombraba mi archivo de capa para que estuviera en el mismo directorio que dojo.js (es decir, que fuera "name: 'myProject.js'") y ajustara la etiqueta del script para usar esta ruta (./release/ myProject/dojo/myProject.js.uncompressed.js), luego el cargador extrae los archivos nls correctos. – tommyjr

+0

Supongo que esto tiene que ver con su modulePaths en el objeto djConfig. Si observa firebug o similar, ¿qué URL es la aplicación que intenta cargar las nls de vs desde dónde debería cargarla? –

Respuesta