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.