Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

201
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda