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

372
Views
Importación condicional con ES Module (fetch/node-fetch)

Estoy escribiendo un código JS que se puede usar para la aplicación Node o para la aplicación de navegador web JavaScript .

Desde Node 17.5, ahora es posible usar la fetch API nativa desde JavaScript.

Me pregunto si hay una manera de usar un tipo de importación condicional para el Módulo ES que funcione así:

 if fetch exist => use fetch else import fetch from node-fetch

He intentado algo como esto:

 if(!fetch) { import fetch from 'node-fetch' } ... fetch(url).then(res => ...) ...

Pero genera un error ya que fetch is undefined . Nota: Hice mi prueba usando node@18

¿Alguien tiene una idea para resolver mi problema?

Responder :

Encontré una solución gracias a la respuesta de @Positivity:

 let fetcher = fetch ?? await import('node-fetch');

Luego uso fetcher como fetch.
Si cambio el nombre de la variable para fetch , arroja un error:

 Cannot access 'fetch' before initialization

Finalmente encontré una solución a este error:

 if(!fetch) { const fetch = await import('node-fetch'); } // else => fetch is already declared
about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

La llamada import(), comúnmente llamada importación dinámica, es una expresión similar a una función que permite cargar un módulo ECMAScript de forma asíncrona y dinámica en un entorno potencialmente no modular.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import

por lo que esto debería hacer una importación condicional en las versiones de nodos compatibles:

 let fetch = fetch ?? await import('node-fetch')
about 4 years ago · Santiago Trujillo 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!