Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

200
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!