【问题标题】:Dojo Custom Build ErrorDojo 自定义构建错误
【发布时间】:2015-04-08 18:40:02
【问题描述】:

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

移除后组件构建工作正常。

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

【问题讨论】:

  • 你能把myProfile的内容贴出来吗?
  • @CraigSwing 它是从我的 buildCheck1.html 文件自动生成的。如果您仍然需要它会发布。
  • 我也有同样的问题。当构建脚本想要将它复制到发布目录时,它使用了错误的 dojo 路径。如果 html 文件包含 dojo 文件夹下的任何内容,则会发生这种情况:dojo.require("dojo.&lt;*&gt;")。使用dojo.require("dijit.&lt;*&gt;")dojo.require("dojox.&lt;*&gt;") 可以正常工作。

标签: build dojo


【解决方案1】:

看起来在发生错误时,dojo/i18n 尚未构建。我觉得很奇怪,你说它是 ItemFileReadStore - 正如在 dojo.data 中指出的那样需要本地化。

尝试手动添加 dojo.require("dojo.i18n");到您的 .html 上面的任何 dijits reqs

【讨论】:

    【解决方案2】:

    我不知道您是如何组织文件的,但就我而言,我是这样安排的:

    - 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.&lt;*&gt;") 很好,dojo.require("dojox.&lt;*&gt;") 很好,但是 dojo.require("dojo.&lt;*&gt;") 会导致构建脚本使用不正确的相对路径到 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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 2011-07-25
      • 2012-04-24
      • 1970-01-01
      相关资源
      最近更新 更多