Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

672
Vistas
import () en ts no es dinámico? ¿Cuál es la causa?

Según MDN , import() es un método dinámico similar a una función. Sin embargo, no lo encontré dinámico en mi proyecto ts.

Digamos que tengo un appleShare.json:

 { price: 123 }

Y luego, hay un index.ts:

 console.log("update the price to 456...") // manually modify the json file content making price 456 let currentPrice = await import("./appleShare.json").then(obj=obj.price) console.log(currentPrice)

index.ts directamente en vs-code , el resultado en la consola:

 update the price to 456... 123

Espero 456, pero obtuve 123 . Desde mi limitado conocimiento, supongo que hay dos posibles razones:

  1. Tengo un malentendido en la import() y la importación dinámica.
  2. Mi entendimiento es correcto, pero vs-code compiló todo el código en js antes de ejecutarlo. Por lo tanto, nunca obtendré el precio recién modificado.

Quiero preguntar, ¿cuál es exactamente la causa del problema y cómo resolverlo?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La import() tiene los siguientes comportamientos diferentes de la import normal, que a menudo se denomina importación "estática".

  1. Puede construir un nombre de archivo de módulo en código y luego puede cargar ese módulo desde el nombre de archivo que creó. No puede crear dinámicamente nombres de archivos de módulos con la import regular. Los nombres de archivo para la import regular deben especificarse estáticamente para que cualquiera que analice el archivo, pero no ejecute el código en él, los conozca. Esta declaración estática permite el análisis de código para cosas como la sacudida de árboles y la agrupación. La importación dinámica no se puede utilizar con tanta eficacia con características como esa.
  2. La import() puede ocurrir en cualquier parte de su código (no solo en la parte superior de su módulo). La import regular no puede estar en cualquier parte de su código. En este sentido, se carga "dinámicamente" bajo demanda, no solo al inicio del módulo.
  3. Se puede usar una declaración de import() para cargar un módulo ESM en un módulo CommonJS. La declaración de import regular no se puede usar en un módulo CommonJS en absoluto.

Los módulos, incluso los cargados dinámicamente, se almacenan en caché. Una vez que se cargan, las declaraciones de import() posteriores que usan el mismo nombre de archivo simplemente cargan el módulo desde el caché, no vuelven a leer el archivo. Es por eso que su import() no está recogiendo el JSON modificado.

Si desea volver a leer el archivo, no use la import ; use algo como fs.promises.readFile() y luego analice el JSON. Esto leerá una copia nueva de los datos cada vez que lo llame.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda