javascript - setextent - 導入ES6時出現“未捕獲的SyntaxError:無法在模塊外部使用import語句”
setextent arcgis javascript (1)
看起來錯誤的原因是:
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 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 };