0

我的项目有以下 AMD 配置:

var amdconfig = {
  baseUrl: __AMD_CONFIG_BASE_URL__,
  packages: [
    {name: "loader", location: "./samples/lib/requirejs"},
    {name: "dojo", location: "./samples/lib/dojo"},
    {name: "dojox", location: "./samples/lib/dojox"},
    {name: "dijit", location: "./samples/lib/dijit"},
    {name: "luciad", location: "./luciad"},
    {name: "samples", location: "./samples"}
  ],
  cache: {},
  paths: {
    jquery: "./samples/lib/jquery/jquery-1.12.4",
    d3: "./samples/lib/d3/d3",
    bloodhound: "./samples/lib/typeahead/bloodhound",
    typeahead: "./samples/lib/typeahead/typeahead.jquery"
  }
};

对于 Dojo 构建系统,我有以下配置:

var profile = {
  basePath: __AMD_CONFIG_BASE_URL__,
  releaseDir: "release",
  action: "release",
  stripConsole: "all",
  optimize: "closure",
  layerOptimize: "closure",
  selectorEngine: "acme",
  async: 1,
  packages: [{
    name: "loader",
    location: "./samples/lib/requirejs",
    destLocation: "./samples/lib/requirejs"
  }, {
    name: "dojo",
    location: "./samples/lib/dojo",
    destLocation: "./samples/lib/dojo"
  }, {
    name: "dijit",
    location: "./samples/lib/dijit",
    destLocation: "./samples/lib/dijit"
  }, {
    name: "dojox",
    location: "./samples/lib/dojox",
    destLocation: "./samples/lib/dojox"
  }, {
    name: "luciad",
    location: "../../main/javascript/luciad",
    destLocation: "./luciad"
  }, {
    name: "samples",
    location: "./samples",
    destLocation: "./samples"
  }],
  paths: {
    jquery: "./samples/lib/jquery/jquery-1.12.4",
    d3: "./samples/lib/d3/d3",
    bloodhound: "./samples/lib/typeahead/bloodhound",
    typeahead: "./samples/lib/typeahead/typeahead.jquery"
  },
  layers: {
    "samples/lib/requirejs": {
      include: [
        "samples/lib/requirejs"
      ],
      boot: true
    }
  }
};

不幸的是,Dojo 构建系统似乎不知道如何处理路径:

error(311) Missing dependency. module: samples/trajectories/main; dependency: bloodhound
error(311) Missing dependency. module: samples/trajectories/TimeChart; dependency: d3
error(311) Missing dependency. module: samples/trajectories/TimeChart; dependency: jquery
error(311) Missing dependency. module: samples/trajectories/TypeaheadFilter; dependency: jquery
error(311) Missing dependency. module: samples/trajectories/TypeaheadFilter; dependency: bloodhound
error(311) Missing dependency. module: samples/trajectories/TypeaheadFilter; dependency: typeahead

我怎样才能解决这个问题?

我尝试使用该files属性,但我也无法让它工作:

...
  files: [
    ["jquery", "./samples/lib/jquery/jquery-1.12.4.js"],
    ["d3", "./samples/lib/d3/d3.js"],
    ["bloodhound", "./samples/lib/typeahead/bloodhound.js"],
    ["typeahead", "./samples/lib/typeahead/typeahead.jquery.js"]
  ],
...

我尝试将它们定义为包,但这也不起作用:

...
{
    name: "jquery",
    location: "./samples/lib/jquery",
    destLocation: "./samples/lib/jquery",
    main: "jquery-1.12.4"
  }, {
    name: "d3",
    location: "./samples/lib/d3",
    destLocation: "./samples/lib/d3",
    main: "d3"
  }, {
    name: "bloodhound",
    location: "./samples/lib/typeahead",
    destLocation: "./samples/lib/typeahead",
    main: "bloodhound"
  }, {
    name: "typeahead",
    location: "./samples/lib/typeahead",
    destLocation: "./samples/lib/typeahead",
    main: "typeahead.jquery"
  }
...

我错过了什么?

我正在使用 1.10.4 版本dojo-util

4

1 回答 1

0

我遇到了同样的问题。来自Dojo 构建文档

使用 --dojoConfig 命令行标志指向一个脚本,该脚本包含一个带有包配置数据的 dojoConfig 对象

目前尚不清楚,但这可以被视为构建配置文件仅使用包信息,而忽略了路径变量。

幸运的是,我找到了这篇文章,它解释了如何在构建配置文件中使用地图对象,它的作用类似于 dojoConfig 中的路径变量。

所以在你的情况下,如果你要添加

"map": {
  "*": {
    "jquery": "./samples/lib/jquery/jquery-1.12.4",
    "d3": "./samples/lib/d3/d3",
    "bloodhound": "./samples/lib/typeahead/bloodhound",
    "typeahead": "./samples/lib/typeahead/typeahead.jquery"
  }
}

到您的构建配置文件并将路径保留在 dojoConfig 中,事情应该可以工作。

由于“地图”和“路径”的重复配置,不确定这是否是最优雅的解决方案,所以如果有人有更好的解决方案,请回复!

于 2018-09-18T22:34:50.160 回答