javascript - setextent - 導入ES6時出現“未捕獲的SyntaxError:無法在模塊外部使用import語句”



setextent arcgis javascript (1)

我正在使用ArcGIS JSAPI 4.12,並希望使用 空間幻覺 在地圖上繪製軍事符號。

當我向腳本添加 milsymbol.js 時,控制台返回錯誤 Uncaught SyntaxError: Cannot use import statement outside a module ,因此我向腳本添加 type="module" ,它返回 Uncaught ReferenceError: ms is not defined

這是我的代碼:

<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" 。 我現在真的很困惑,他們如何在不添加類型的情況下設法使其正常工作?

milsymbol.js

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

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

export { ms };

看起來錯誤的原因是:

1)您當前正在將源文件加載到 src 目錄中,而不是將構建文件加載到 dist 目錄中(您可以 here 查看預期的分佈式文件)。 這意味著您正在以未更改/未捆綁的狀態使用本機源代碼,從而導致以下錯誤: Uncaught SyntaxError: Cannot use import statement outside a module 。 應該使用捆綁版本來解決此問題,因為軟件包 使用匯總 來創建捆綁包。

2)出現 Uncaught ReferenceError: ms is not defined 錯誤的原因是因為模塊是作用域的,並且由於您使用本機模塊加載庫,所以 ms 不在全局範圍內,因此以下內容不可訪問腳本標籤。

看來您應該能夠加載此文件的 dist 版本,以便在 window 上定義 ms 。 從庫作者那裡查看 此示例 ,以查看如何完成此操作的示例。





arcgis-js-api