2010-09-20 79 views
5

我的问题虽然起初有点类似于this one,但似乎是一个更基本的问题 - 可能是构建系统中的一个错误。我为我的dojo应用程序创建了一个自定义构建。我只建一层,现在,这里的配置文件脚本/对象的样子:Dojo使用NLS生成 - requireLocalization(..)失败?

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

当我运行与描述它输出在下面的目录结构的文件的生成:

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 

最后在我的测试HTML网页 - 我有以下几点:

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

但不幸的是,萤火虫在我吐出了这一点:

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

我认为正在发生的

我通过一些领导到上述错误代码的跟踪,似乎像在文件的结尾dojo.i18n._preloadLocalizations()调用不正确的实际加载nls文件从./release/nls

任何想法如何解决这个问题,而不诉诸手动包括与<script>标签的nls文件?

+0

我遇到过类似的问题。我不清楚构建系统或装载器是否存在问题。我确定如果我将我的图层文件命名为与dojo.js相同的目录(也就是说,将其命名为“name:'myProject.js'”),并调整脚本标记以使用此路径(./ release/myProject/dojo/myProject.js.uncompressed.js),然后加载器将引入正确的nls文件。 – tommyjr 2011-01-13 18:38:13

+0

我猜这与你的djConfig对象中的modulePath有关。如果你看看萤火虫或类似的东西,应用程序试图加载nls的URL是从哪里加载的? – 2011-08-15 13:55:27

回答