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

244
Vistas
¿Cómo permitir que un paquete CJS requiera dinámicamente un módulo ES?

Estoy usando un paquete de carga al que paso el nombre de un módulo loadee y require() s él.

El cargador usa require() de CJS para requerir dinámicamente el loadee , pero el loadee es un módulo ES. Debido a esto, Node.js arroja un error.

 Error [ERR_REQUIRE_ESM]: require() of ES Module LOADEE from LOADER not supported. Instead change the require of LOADEE in LOADER to a dynamic import() which is available in all CommonJS modules.

Ni el cargador ni el cargador son administrados por mí, por lo que no puedo modificarlos. Yo tampoco puedo evitar usarlos.

Por supuesto, puedo escribir un loadee intermediario, escrito en CJS (para que el cargador pueda cargarlo), que luego carga el loadee verdadero y lo devuelve al cargador . Pero no sé cómo hacerlo, ya que la import() es asíncrona (devuelve una promesa), pero el require() del cargador está sincronizado y espera el módulo cargado inmediatamente.

¿Hay algo más que pueda hacer para que esto funcione?

Ejemplo para mostrar lo que está pasando

En caso de que la descripción que di no sea lo suficientemente clara, estoy tratando de publicar algunos fragmentos mínimos de código para mostrar lo que está sucediendo:

CARGADOR (CJS; no escrito por mí)
 module.exports = function(pkg) { const x = require(pkg) console.log(x) }
LOADEE (Módulo ES; no escrito por mí)
 default export const x = 1
./index.js (este es mío: puedo elegir CJS o Módulo ES o cualquier otra cosa)
 import load from 'LOADER' load('LOADEE')

Cuando ejecuto node ./index.js esto es lo que obtengo:

 Error [ERR_REQUIRE_ESM]: require() of ES Module LOADEE from LOADER not supported. Instead change the require of LOADEE in LOADER to a dynamic import() which is available in all CommonJS modules.

Preguntas similares

Ya encontré preguntas similares sobre el desbordamiento de pila. Por ejemplo:

  • Error: no se admite require () de módulos ES al importar node-fetch

  • Error [ERR_REQUIRE_ESM]: no se admite require() del módulo ES

Explican cómo usar import() para importar dinámicamente un módulo. Pero eso no me ayuda ya que no puedo cambiar la llamada require() en el cargador y no sé cómo envolverlo con una import() .

¿Hay algo que pueda hacer para que esto funcione?

about 4 years ago · Juan Pablo Isaza
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