2012-06-07 42 views
0

我的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") 

取出后,在组件构建工作正常,我geeting此错误。

可能是什么问题?我应该添加什么来避免此错误?

+0

您可以发布我的资料的内容是什么? –

+0

@CraigSwing它是从我的buildCheck1.html文件自动生成的。如果你仍然需要它会发布。 – BOSS

+0

我有同样的问题。当构建脚本想要将其复制到发行版目录中时,它会使用错误的dojo路径。发生这种情况时,如果html文件在dojo文件夹下包含任何要求:'dojo.require(“dojo。<*>”)''。用'dojo.require(“dijit。<*>”)'或'dojo.require(“dojox。<*>”)'它工作正常。 –

回答

0

它看起来就像发生错误,dojo/i18n尚未构建。对我来说这似乎很奇怪,你说它是ItemFileReadStore - 正如在dojo.data中注意的那样需要本地化。

尝试添加一个手动dojo.require(“dojo.i18n”);您的.html上述请求数

+0

我试过了,没有工作。 –

0

我不知道你是怎么安排你的文件,但对我来说dijit的,我有这样的:

- 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'文件夹加载任何requiredojo.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版本,所以正确的修复应该是升级。但是,由于在某些情况下,它仅仅是太痛了,这里是一个肮脏的黑客工具,使人们有可能为我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); 
    } 
}