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

243
Views
¿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
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!