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文件?
我遇到过类似的问题。我不清楚构建系统或装载器是否存在问题。我确定如果我将我的图层文件命名为与dojo.js相同的目录(也就是说,将其命名为“name:'myProject.js'”),并调整脚本标记以使用此路径(./ release/myProject/dojo/myProject.js.uncompressed.js),然后加载器将引入正确的nls文件。 – tommyjr 2011-01-13 18:38:13
我猜这与你的djConfig对象中的modulePath有关。如果你看看萤火虫或类似的东西,应用程序试图加载nls的URL是从哪里加载的? – 2011-08-15 13:55:27