导入 ECMAScript 6 时出现“未捕获的语法错误:无法在模块外部使用导入语句”

我正在使用 ArcGIS JSAPI 4.12,并希望使用空间错觉在地图上绘制军事符号。

当我添加到脚本时,控制台返回错误milsymbol.js

未捕获的语法错误:无法在模块外部使用导入语句

所以我添加到脚本中,然后它返回type="module"

未捕获的引用错误: ms 未定义

这是我的代码:

<link rel="stylesheet" href="https://js.arcgis.com/4.12/esri/css/main.css">
<script src="https://js.arcgis.com/4.12/"></script>
<script type="module" src="milsymbol-2.0.0/src/milsymbol.js"></script>

<script>
    require([
        "esri/Map",
        "esri/views/MapView",
        "esri/layers/MapImageLayer",
        "esri/layers/FeatureLayer"
    ], function (Map, MapView, MapImageLayer, FeatureLayer) {

        var symbol = new ms.Symbol("SFG-UCI----D", { size: 30 }).asCanvas(3);
        var map = new Map({
            basemap: "topo-vector"
        });

        var view = new MapView({
            container: "viewDiv",
            map: map,
            center: [121, 23],
            zoom: 7
        });
    });
</script>

因此,无论我是否添加,总会有错误。但是,在空间错觉的官方文件中,脚本中没有任何内容。我现在真的很困惑。他们如何在不添加类型的情况下设法让它工作?type="module"type="module"

文件符号.js

import { ms } from "./ms.js";

import Symbol from "./ms/symbol.js";
ms.Symbol = Symbol;

export { ms };

答案 1

我收到此错误,因为我忘记了脚本标记的内部:type="module"

<script type="module" src="milsymbol-2.0.0/src/milsymbol.js"></script>

答案 2

节点.js/ NPM 的更新

“type”: “module” 添加到 package.json 文件中。

{
  // ...
  "type": "module",
  // ...
}

注意:使用模块时,如果得到 ,则需要使用导入语法而不是 require。您无法在它们之间进行本机混合和匹配,因此,如果您需要同时使用两者,则需要选择一个或使用捆绑器。ReferenceError: require is not defined