我正在尝试使用 Dojo 构建系统,使用 untjs.profile.js 配置文件将所有 Dojo 和自定义模块缩小并压缩到单个 JavaScript 文件中。该配置文件的示例代码如下:
dependencies = {
layers: [{
name: "dojo.js",
customBase: true,
discard: true,
dependencies: ["dojo.dojo","dojo._base","dojo.parser", "dojo.string", "dojo.cache", "dojo.hash", "dojo.fx", "dojo.widget.*", "dojo.widget.ContentPane", "dojo.date", "dojo.date.stamp", "dojo.cookie", "dojo._base.event", "dojo.date", "dojo.date.stamp", "dojo.fx", "dojo.i18n"]
},
{
name: "../dijit/dijit.js",
resourceName: "dijit",
dependencies: ["dijit.dijit", "dijit.layout.LayoutContainer", "dijit.Menu", "dijit._KeyNavContainer", "dijit.MenuItem", "dijit.Dialog", "dijit.form.Button", "dijit.layout", "dijit.layout.ContentPane", "dijit.layout.TabContainer", "dijit.form.Textarea", "dijit.form.SimpleTextarea", "dijit.Dialog", "dijit.dijit-all", "dijit.form.SimpleTextarea", "dijit.form._FormWidget", "dijit._Widget", "dijit._Templated", "dijit._base", "dijit._Container", "dijit._HasDropDown", "dijit.layout._TabContainerBase", "dijit.layout.TabController", "dijit.layout.ScrollingTabController", "dijit.layout.StackContainer", "dijit._Templated", "dijit.layout._LayoutWidget", "dijit._Container", "dijit._Contained", "dijit.layout.StackController", "dijit.layout.SplitContainer", "dijit.form.ToggleButton", "dijit.TitlePane"],
discard: true
}, {
name: "../dojox/layout/ScrollPane.js",
resourceName: "dojox.layout.ScrollPane",
layerDependencies: ["dojo.js", "../dijit/dijit.js"],
dependencies: ["dojox.layout.ScrollPane"],
discard: true
}, {
name: "../untjs.js",
resourceName: "untjs",
layerDependencies: ["dojo.js", "../dijit/dijit.js", "../dojox/layout/ScrollPane.js"],
dependencies: ["global.init", "global.untconfig", "global.historymanager", "user.cookiedata", "user.registration", "user.auth", "common.animation", "common.category", "common.fields", "common.header", "common.nodes", "common.popup", "common.posttype", "common.timestamp", "common.validation", "common.watermark", "common.category", "page.home", "page.profile", "page.people", "page.terms", "page.about", "page.landing", "page.privacy", "page.template", "xhr.friends", "xhr.suggestions", "xhr.requests", "xhr.categories", "xhr.posts", "xhr.comments", "xhr.terms", "xhr.about", "xhr.userinfo", "xhr.privacy", "xhr.cookieUnT", "xhr.registerUnT", "controls.fbinvite", "controls.friends", "controls.mylikes", "controls.activitystream", "controls.people", "controls.requests", "controls.suggestions", "controls.userinfo", "controls.tellsomethingbox"]
}],
prefixes: [["dijit", "../dijit"],["dojox", "../dojox"], ["global", "../../global"], ["page", "../../page"], ["user", "../../user"], ["xhr", "../../xhr"], ["common", "../../common"], ["controls", "../../controls"], ["catalog", "../../catalog"]]
};
但是当我按以下方式执行 build.bat 命令时:
build.bat release
Name=untjs releaseDir=..\..\..\untjs profileFile=..\..\..\untjs.profile.js actio
n=clean,release optimize=shrinksafe mini=true internStrings=true
我收到以下错误。
rhino load('./../../../untjs/untjs/dojox/grid/nls/DataGrid_ar.js') failed. Exception: SyntaxError: syntax error js: "./jslib/i18nUtil.js", line 244: exception from uncaught JavaScript throw: Cannot create flattened bundle for src file: ../../../untjs/untjs/dojox/grid/nls/ DataGrid_ar.js
另外,我不明白为什么 dojo 构建系统正在构建文件(例如 dojox.grid.datagrid
),我根本没有将其包含在配置文件中。
我希望有人能解决这个令人沮丧的问题。
最佳答案
可能是编码问题。你的 jvm 是否有可能以 UTF-8 以外的默认值运行?我认为该工具应该指定 UTF-8,但如果使用其他内容,这可以解释错误。
优化设置会压缩树中的所有文件,而不仅仅是您正在构建的层,因此像 dojox.grid 及其 nls 依赖项这样的模块都会得到处理。如果您只想处理图层文件,请尝试使用layerOptimize。
关于javascript - 获取错误消息 : Cannot create flattened bundle for src file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3600622/