Build Dojo自定义生成错误

Build Dojo自定义生成错误,build,dojo,Build,Dojo,我的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"); d

我的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”);我不知道你的文件是如何组织的,但在我的例子中,我的文件是这样的:

- 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
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);
    }
}
我也面临着同样的问题。当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
但是我应该得到类似于
复制:../../dojo/../dijit到:../../release/dojo/dijit
的东西。缺少一个
。/

现在,它可能是一个bug(我懒得进一步研究它),因为1.6是dojo的一个非常旧的版本,正确的修复应该是升级。但由于在某些情况下,这实在是太痛苦了,下面是一个让我的构建脚本能够运行并完成的肮脏的黑客行为:

dojo-release-1.6.1-src/util/buildscripts/build.js
的第107行添加以下内容:

prefixPath = '../' + prefixPath;
因此,整个代码块如下所示:

- 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
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);
    }
}
for(变量i=0;i
你能发布myProfile的内容吗?@CraigSwing它是从我的buildCheck1.html文件自动生成的。如果你仍然需要它,我会发布。我也有同样的问题。当构建脚本想要在发布目录中复制dojo时,它使用了错误的dojo路径。如果html文件包含dojo文件夹下的任何内容的require:
dojo.require(“dojo”)
,就会发生这种情况。使用
dojo.require(“dijit”)
dojo.require(“dojox”)
可以正常工作。