[英]Dojo Custom Build Error
我的HTML文件 : buildCheck.html
<SCRIPT src="/dojo/dojo.js"></SCRIPT>
<SCRIPT>
dojo.require("dijit.form.Button");
dojo.require("dijit.form.CheckBox");
dojo.require("dijit.form.ComboBox");
dojo.require("dijit.Dialog");
dojo.require("dojo.data.ItemFileReadStore");
dojo.require("my.app");
</SCRIPT>
命令:
>build.bat action=release htmlFiles=../../buildCheck1.html profile=myProfile
错误:
kwArgs.htmlFiles ../../buildCheck1.html
release: Using profile: profiles/myProfile.profile.js
release: Using version number: 0.0.0.dev for the release.
release: Deleting: ../../release/dojo
release: Copying: ../dojo/../dijit to: ../../release/dojo/dijit
release: ********** Not Copied: ../dojo/../dijit
release: Copying: ../dojo/../dojox to: ../../release/dojo/dojox
release: ********** Not Copied: ../dojo/../dojox
release: Copying: ../dojo to: ../../release/dojo/dojo
release: ********** Not Copied: ../dojo
release: Building dojo.js and layer files
js: "./../../dojo/_base/_loader/loader.js", line 423: exception from uncaught Ja
vaScript throw: Error: Could not load 'dojo.i18n'; last tried '../../release/doj
o/dojo/i18n.js'
如果我添加以下组件,则会遇到这个错误
dojo.require("dojo.data.ItemFileReadStore")
删除后,组件构建工作正常。
可能是什么问题我应该添加些什么以避免此错误?
看起来在发生错误的地方,尚未构建dojo / i18n。 对我来说,您说它是ItemFileReadStore似乎很奇怪-注意dojo.data中的内容需要本地化。
尝试添加手册dojo.require(“ dojo.i18n”); 到您的.html以上所有dijits要求
我不知道您如何组织文件,但就我而言,我是这样的:
- js
- dojo_require.js (the file with "dojo.require" statements, just like your "buildCheck.html")
- dojo-release-1.6.1-src (dojo files)
- dijit
- dojo
- dojox
- util
- buildscripts
- release
我也面临同样的问题。 我发现这种情况发生在html文件包含从“ dojo”文件夹加载内容的任何require
。 dojo.require("dijit.<*>")
可以, dojo.require("dojox.<*>")
可以,但是dojo.require("dojo.<*>")
会导致构建脚本使用dojo的相对路径不正确。 我得到的输出与您相同:
release: Deleting: ../../release/dojo
release: Copying: ../dojo/../dijit to: ../../release/dojo/dijit
但是我应该有类似Copying: ../../dojo/../dijit to: ../../release/dojo/dijit
。 一个../
丢失了。
现在,它可能是一个错误(我懒于进一步研究它),并且由于1.6是dojo的相当老的版本,因此正确的修补程序应该是升级。 但是由于在某些情况下,这太痛苦了,这是一个肮脏的hack,它使我的buildscript可以运行并完成:
在dojo-release-1.6.1-src/util/buildscripts/build.js
的第107行中,添加以下行:
prefixPath = '../' + prefixPath;
这样整个代码块如下所示:
for(var i = 0; i < prefixes.length; i++){
var prefixName = prefixes[i][0];
var prefixPath = prefixes[i][1];
prefixPath = '../' + prefixPath; // HACK!
var finalPrefixPath = prefixPath;
if(finalPrefixPath.indexOf(".") == 0 && prefixName != "dojo"){
finalPrefixPath = dojoPrefixPath + "/" + prefixPath;
}
_copyToRelease(prefixName, finalPrefixPath, kwArgs, buildLayers);
if(kwArgs.symbol){
var releasePath = kwArgs.releaseDir + "/" + prefixName.replace(/\./g, "/");
buildUtil.insertSymbols(releasePath, kwArgs);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.