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

Jow*_*wet 1 javascript arcgis requirejs arcgis-js-api

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

require(["esri/config", "esri/Map", "esri/views/MapView"], function (
  esriConfig,
  Map,
  MapView
) {
  //...
});
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述

我的项目只支持ES5。因此,我无法使用像esri-loader这样的节点库。

Jow*_*wet 5

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

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",
    },
  });
Run Code Online (Sandbox Code Playgroud)

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