多个 require 函数的问题(RequireJS 和 ArcGIS JS API)

Problem with multipe require functions (RequireJS and ArcGIS JS API)

我目前正在寻找一种在项目中使用模块加载器 RequireJS and the ArcGIS JS API 的方法。根据文档,可以加载 ArcGIS JS API 的模块,如下面的代码片段所示:

require(["esri/config", "esri/Map", "esri/views/MapView"], function (
  esriConfig,
  Map,
  MapView
) {
  //...
});

问题是,如果我想从 ArcGIS JS API 加载模块,它实际上调用了 RequireJS 的 Require 函数:

但是它应该加载在 ArcGIS JS 中定义的 require 函数 API:

RequireJS 找不到 ArcGIS JS 的模块API,因此在控制台中抛出错误:

我的项目只支持ES5。出于这个原因,我不能使用像 esri-loader.

这样的节点库

我找到了解决方案。我必须添加以下代码:

require.config({
    paths: {
      esri: "https://js.arcgis.com/4.18/esri",
      dojo: "https://js.arcgis.com/4.18/dojo",
      dojox: "https://js.arcgis.com/4.18/dojox",
      dijit: "https://js.arcgis.com/4.18/dijit",
      "@dojo": "https://js.arcgis.com/4.18/@dojo",
      cldrjs: "https://js.arcgis.com/4.18/cldrjs/dist/cldr",
      globalize:
        "https://js.arcgis.com/4.18/cldrjs/dist/globalize/dist/globalize",
      maquette: "https://js.arcgis.com/4.18/maquette/dist/maquette.umd",
      "maquette-css-transitions":
        "https://js.arcgis.com/4.18/maquette-css-transitions/dist/maquette-css-transitions.umd",
      "maquette-jsx":
        "https://js.arcgis.com/4.18/maquette-jsx/dist/maquette-jsx.umd",
      moment: "https://js.arcgis.com/4.18/moment",
      tslib: "https://js.arcgis.com/4.18/tslib/tslib",
    },
  });

我在以下项目中找到了这个解决方案:https://github.com/r-pankevicius/arcgis-js-api-with-requirejs/blob/master/4.13/scripts/main.js