jerry chen
Estoy usando ArcGIS JSAPI 4.12 y deseo usar Ilusiones espaciales dibujar símbolos militares en un mapa.
cuando agrego milsymbol.js
al script, la consola devuelve error
Error de sintaxis no capturado: no se puede usar la declaración de importación fuera de un módulo
entonces agrego type="module"
al script, y luego regresa
Error de referencia no detectado: ms no está definido
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 ninguna type="module"
en el guión. Ahora estoy realmente confundido. ¿Cómo se las arreglan para que funcione sin agregar el tipo?
Archivo milsymbol.js
import { ms } from "./ms.js";
import Symbol from "./ms/symbol.js";
ms.Symbol = Symbol;
export { ms };
emmanuel
Recibí este error porque olvidé el type="module"
dentro de la etiqueta del script:
<script type="module" src="milsymbol-2.0.0/src/milsymbol.js"></script>
-
Horas. Pasé horas tratando de hacer que una importación funcionara. Finalmente me di por vencido durante semanas, volví a eso y ahora tu comentario de 1 línea lo arregló para mí. Gracias.
– Ryan D.
25 de enero a las 23:15
-
¡Tú eres la Divinidad allanando el camino para nosotros, mortales! Otras respuestas realmente me asustaron, ¡pero esto va directo al grano!
– Martín Melichar
8 de febrero a las 21:12
-
Gracias por su respuesta, ahora sé que tengo el archivo equivocado. He estado buscando la versión dist del archivo pero sin resultado. ¿Conoces alguna forma de obtener la versión dist? ¡Muchas gracias!
–Jerry Chen
3 de octubre de 2019 a las 5:58
-
Está disponible para descargar en npm (npmjs.com/package/milsymbol). Alternativamente, puede compilarlo usted mismo clonando el repositorio y ejecutando uno de los scripts de compilación. Parece que hay un script de compilación de AMD (github.com/spatialillusions/milsymbol/blob/master/…) que debería permitirle
require
el paquete construido directamente en su código.– Kai
3 de octubre de 2019 a las 6:15
-
Lo descargué a través de npm, ahora tengo un script:
<script src="node_modules/milsymbol/dist/milsymbol.js"></script>
pero la consola aún regresaUncaught ReferenceError: ms is not defined
. el problema esms
no está definido en eldist/milsymbol.js
se define ensrc/milsymbol.js
pero requieretype="module"
y causará un problema de alcance. Hay alguna solución para esto. ¡Muchas gracias!–Jerry Chen
3 de octubre de 2019 a las 6:33
-
¿Qué pasa si esa es la intención real, haciendo referencia a ella desde /src. Como el autor no planea exponer una propiedad de una clase, por ejemplo …
– Cristián E.
18 de enero de 2021 a las 17:20
nik s
Resolví mi caso reemplazando “importar” por “requerir”.
// import { parse } from 'node-html-parser';
const parse = require('node-html-parser');
-
const {parse} = require('node-html-parser');
trabajó para mi– ERecargar
28 de agosto de 2021 a las 17:36
-
¿Cuál es la explicación? ¿Por qué funciona esto? Responda editando (cambiando) su respuesta, no aquí en los comentarios (sin “Editar:”, “Actualizar:” o similar; la respuesta debería aparecer como si hubiera sido escrita hoy).
-Peter Mortensen
5 sep 2021 a las 11:39
-
El software exacto que me causó este problema en node.
– Greggory Wiley
26 oct 2021 a las 15:38
-
la pregunta era sobre el navegador
– Sergio
19 de noviembre de 2021 a las 0:01
-
Esta respuesta es útil en NodeJs si desea mantener la vieja escuela. Pero no está relacionado con la pregunta.
– Michel El Hajj
2 de marzo de 2022 a las 10:01
Hay varias formas comunes de resolver el conflicto asociado con el problema anterior
1. Lo primero: En el guión, incluir type=module
<script type="module" src="milsymbol-2.0.0/src/milsymbol.js"></script>
2. El segundo: en node.js, en su package.json
archivo
{
"type": "module",
}
reiniciar el proyecto
npm start
3. El tercero: reemplazar la importación por requerida
Try this
import { parse } from 'node-html-parser';
parse = require('node-html-parser');
Else try this
//import { parse } from 'node-html-parser';
parse = require('node-html-parser');
-
const {parse} = require('node-html-parser');
trabajó para mi– ERecargar
28 de agosto de 2021 a las 17:36
-
¿Cuál es la explicación? ¿Por qué funciona esto? Responda editando (cambiando) su respuesta, no aquí en los comentarios (sin “Editar:”, “Actualizar:” o similar; la respuesta debería aparecer como si hubiera sido escrita hoy).
-Peter Mortensen
5 sep 2021 a las 11:39
-
El software exacto que me causó este problema en node.
– Greggory Wiley
26 oct 2021 a las 15:38
-
la pregunta era sobre el navegador
– Sergio
19 de noviembre de 2021 a las 0:01
-
Esta respuesta es útil en NodeJs si desea mantener la vieja escuela. Pero no está relacionado con la pregunta.
– Michel El Hajj
2 de marzo de 2022 a las 10:01
Pedro Mortensen
También me enfrentaba al mismo problema hasta que agregué type=”module” al script.
Antes era así
<script src="https://stackoverflow.com/questions/58211880/src/main.js"></script>
Y después de cambiarlo a
<script type="module" src="https://stackoverflow.com/questions/58211880/src/main.js"></script>
Funcionó perfectamente.
-
Obtener CORS para hacer esto
– Shreyan Mehta
20 de junio de 2020 a las 22:18
-
Lo que significa que está solicitando desde otro dominio. Puedes arreglar eso agregando
Access-Control-Allow-Origin: *
en sus encabezados. Puede consultar los documentos de MDN sobre CORS en desarrollador.mozilla.org/en-US/docs/Web/HTTP/….– Deseo Kaleba
21 de junio de 2020 a las 8:26
-
no, sé sobre cors, la cuestión es que estos son mis archivos locales
– Shreyan Mehta
23 de junio de 2020 a las 19:10
-
Debe servir su secuencia de comandos en un servidor http, los navegadores usan una solicitud http para cargar módulos es6, el servidor debe responder en el encabezado un CORS que permita su origen.
– danilo
8 de julio de 2020 a las 1:22
-
la forma más sencilla: puede usar el servidor http: stackoverflow.com/a/23122981/935330
– danilo
8 de julio de 2020 a las 1:39
Esta pregunta está en el top 10 de las 21 642 537 preguntas en Stack Overflow en términos de tasa de visualización (presumiblemente de los resultados del motor de búsqueda). Tiene alrededor de 1800 visitas por día durante su vida útil.
-Peter Mortensen
5 de septiembre de 2021 a las 11:14
@PeterMortensen Probablemente porque el título lo hizo parecer mucho más genérico de lo que realmente es.
– usuario3840170
ayer