【发布时间】:2011-11-21 16:18:19
【问题描述】:
我正在尝试使用它提供的构建系统构建一个 Dojo 应用程序。我有一个加载 dojo、dijit 和 dojox 库的主 index.php 文件
项目的结构是这样的:
- 根 - _轮廓 - _发布 --dojo-1.3.2-src -- 迪吉特 ——道场 -- dojox -- 实用程序 --myApp --init.js --folders_with_all_my_code --index.php在 _profile 文件夹中,我的 myApp.profile.js 包括以下内容:
dependencies = {
stripConsole : 'all',
action : 'clean,release',
optimize : 'shrinksafe',
releaseName : 'myApp',
localeList : 'fr,es,it',
layers: [
{
name : "../app/init.js",
resourceName : "myApp.init",
dependencies : [
"myApp.init"
]
}
],
prefixes: [
[ "dijit", "../dijit" ],
[ "dojox", "../dojox" ],
[ "app", "../../app" ]
]
};
我正在启动这个脚本来构建应用程序:
cd ../dojo-1.3.2-src/util/buildscripts
./build.bat profileFile=../../../_profile/myApp.profile.js releaseDir=../../../_release
它可以正常构建并按预期设置 _release 目录:
- 根 - _轮廓 - _发布 --我的应用 - 应用程序 -- all_my_code --nls -- init.js.uncompressed.js -- init.js(包含所有压缩依赖项的 2Mb 文件) -- 迪吉特 ——道场 -- dojox -- 实用程序 --dojo-1.3.2-src -- 迪吉特 ——道场 -- dojox -- 实用程序 --myApp -- --index.php在 index.php 文件中,在构建之前,我包含以下内容:
var djConfig = {
parseOnLoad: true,
usePlainJson: true,
modulePaths : { 'app' : '../../myApp/app' }
};
script ... src="/dojo-1.3.2-src/dojo/dojo.js"> ... /script
script ... dojo.require('app.init'); ... /script
并且工作正常。但是一旦我编译了我的层,我应该更改指向 dojo.js 的脚本以指向新创建的层并将 dojo.require 指向新的压缩层。由于在我指定的配置文件中,图层的位置与原始 init,js 文件相同,因此我得到了这个:
var djConfig = {
parseOnLoad: true,
usePlainJson: true,
<s>modulePaths : { 'app' : '../../myApp/app' }</s>
};
<s>script ... src="/dojo-1.3.2-src/dojo/dojo.js"> ... /script</s>
<s>script ... dojo.require('app.init'); ... /script</s>
script ... src="/_release/myApp/dojo/dojo.js"> ... /script
script ... dojo.require('app.init'); ... /script
实际上,当我启动应用程序时,它只正确加载了一个文件,所以我猜路径一切正常。实际上,在 Firebug 日志中,我可以看到 GET 请求,如果展开它,我可以看到所有应用程序都已压缩。然而,在加载它之后它会启动一个异常:
Could not load 'app.init'; last tried '../../myApp/app/init.js'
我不确定,但路径似乎没有问题,因为它正在下载文件 init.js,所以现在我有点困惑。
有什么想法吗?
谢谢!
【问题讨论】:
-
我正在制作一个结构完全相同的测试项目,但加载了我自己的所有小部件,我只包含了一些依赖项,它工作正常。它正确加载文件并加载应用程序(顺便说一下超快),所以我猜代码中存在某种错误。但是在编译构建系统时在代码中发现了一些 JS 错误,所以我猜如果有任何错误它仍然会告诉我,对吧?如果它可以下载整个文件,为什么不加载应用程序?
-
i18n 文件可能有问题吗?我真的不明白它为什么要创建 nls 文件夹,...
-
所以,这里的情况:通常会出现错误(无法加载...)如果:找不到文件(不是这个,它会下载它)你忘记了dojo.provide( )文件(不是这个,是第一行)代码中有一个错误:我想一定是那个,但是当应用程序没有构建时它工作正常,我猜dojo builder没有引入错误......
标签: dojo dojo-build