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

206
Vistas
¿Cómo saber si una pieza de JS se ejecuta en un módulo ES o en un script normal?

Quiero saber si una pieza de JavaScript se ejecuta en un módulo ES o en un script simple.

Esto es lo que probé hasta ahora:

 function isEsm1() { try { // Script gives a syntax error during parsing when script is not an esm return Boolean(import.meta.url); } catch(err) { return false; } } function isEsm2() { // will always return false, because `eval` always seems to be executed in regular script context try { return eval('Boolean(import.meta.url)'); } catch(err) { return false; } } function isEsm3() { // Of course doesn't work, but had to try 😉 return 'meta' in import; }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

¿Se ejecuta el script normal en el navegador o en otro contexto?

En un navegador, ¿qué tal:

 var anyvar = {}; var inModule = anyvar === window.anyvar;

Si estás en un módulo, no estás declarando nada en la ventana...

En NodeJS podrías hacer algo similar con global o esto:

 let inModule = this === module.exports..

Todavía no lo probé... pero debería funcionar, supongo...

Después de la prueba, solo la verificación de this === undefined es suficiente para probar si está ejecutando dentro o fuera de un módulo.

Dentro de un módulo, esto no está definido (según las especificaciones). En el ámbito global, esto apunta a global this, que es el objeto de ventana en el caso de un contexto de navegador...

about 4 years ago · Juan Pablo Isaza Denunciar

0

Gracias a la discusión en la respuesta de John Gorter, creo que hemos encontrado una manera.

console.log('In module: ' + (this === undefined));

Es tan simple como eso. Dentro de un módulo (y solo dentro de un módulo (espero)), this será undefined . Lo encontré en la documentación de v8 aquí: https://v8.dev/features/modules#intro

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