es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Compila un paquete que depende solo de la biblioteca ESM en un paquete CommonJS.

Estoy trabajando en un paquete que depende de una biblioteca exclusivamente ESM: unified y he expuesto mi paquete npm como una biblioteca CommonJS.

Cuando llamo a mi paquete en una aplicación, Node me muestra este mensaje de error:

require() del módulo ES node_modules\unified\index.js no es compatible

El mensaje de error es obvio ya que no se permite realizar require en un módulo ESM, pero ¿no le indiqué ya a TypeScript que compile el código fuente en formato CommonJS?

Referencias:
1. ESM vs CommonJS
2. Cómo crear un módulo NPM híbrido para ESM y CommonJS

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, ya le has indicado a Typescript que compile el código fuente en formato CommonJS. Sin embargo, el mensaje de error que recibiste no está relacionado con Typescript. Es una limitación de Node.js en sí, donde no puedes require un módulo ESM. Para resolver este problema, puedes cambiar tú mismo al formato ESM, o buscar una forma de convertir la biblioteca ESM en formato CommonJS utilizando una herramienta como esm.

    También es importante tener en cuenta que aunque hayas indicado a TypeScript que produzca una salida en formato CommonJS, eso no cambiará el formato de la dependencia de la biblioteca que solo admite ESM que estás utilizando. En otras palabras, la instrucción require utilizada para importar el paquete unified en tu código sigue intentando cargar un módulo ESM porque eso es lo que han especificado los autores del paquete. Entonces, incluso si utilizas TypeScript para producir una salida en formato CommonJS, eso no hará automáticamente que tu código sea compatible con bibliotecas que solo admiten ESM.

Comments are closed.