javascript ecmascript-6 arcgis arcgis-js-api

javascript - "Error de sintaxis no capturado: no se puede usar la declaración de importación fuera de un módulo" al importar ES6



ecmascript-6 arcgis (1)

Estoy usando ArcGIS JSAPI 4.12 y deseo usar Ilusiones espaciales para dibujar símbolos militares en el mapa.

Cuando agrego milsymbol.js al script, la consola devuelve el error Uncaught SyntaxError: Cannot use import statement outside a module , por lo que agrego type="module" al script, devuelve Uncaught ReferenceError: ms is not defined .

Aquí está mi código:

<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>

Entonces, si agrego type="module" o no, siempre hay errores. Sin embargo, en el documento oficial de Spatial Illusions, no hay type="module" en el script. Ahora estoy realmente confundido, ¿cómo logran que funcione sin agregar el tipo?

milsymbol.js

import { ms } from "./ms.js"; import Symbol from "./ms/symbol.js"; ms.Symbol = Symbol; export { ms };


Parece que la causa de los errores son:

1) Actualmente está cargando el archivo fuente en el directorio src lugar del archivo creado en el directorio dist (puede ver cuál es el archivo distribuido previsto here ). Esto significa que está utilizando el código fuente nativo en un estado no alterado / desagregado, lo que lleva al siguiente error: Error de Uncaught SyntaxError: Cannot use import statement outside a module . Esto se debe solucionar mediante el uso de la versión incluida ya que el paquete está utilizando el paquete acumulativo para crear un paquete.

2) La razón por la que está obteniendo el error Uncaught ReferenceError: ms is not defined es porque los módulos tienen un alcance, y dado que está cargando la biblioteca utilizando módulos nativos, ms no está en el alcance global y, por lo tanto, no es accesible en lo siguiente etiqueta de script

Parece que debería poder cargar la versión dist de este archivo para tener ms definido en la window . Consulte este ejemplo del autor de la biblioteca para ver un ejemplo de cómo se puede hacer esto.