Cuando intentas ejecutar un módulo en Node.js, puedes encontrar el siguiente error:
Este problema ocurre porque estás intentando cargar un módulo ECMAScript (ESM) usando require(), que solo funciona con módulos CommonJS (CJS). Aquí te mostramos cómo solucionarlo.
Método 1: Usar import en lugar de require (Recomendado)
Si tu código usa require() para importar un módulo ESM, cámbialo por import.
✍ Ejemplo de conversión
Cambia esto:
const paquete = require(‘paquete-esm’);
Por esto:
❗ Nota: Para usar import, asegúrate de que el archivo tenga la extensión .mjs o que package.json especifique el tipo de módulo (ver Método 2).
Método 2: Declarar tu proyecto como módulo en package.json
Si quieres usar import en archivos .js sin cambiar su extensión a .mjs, agrega esta línea en tu package.json:
Esto le indica a Node.js que todos los archivos .js deben tratarse como módulos ECMAScript (ESM).
Método 3: Usar createRequire para mantener require()
Si necesitas seguir usando require() en un entorno ESM, usa createRequire de Node.js:
Esto te permite importar módulos CommonJS en un entorno ECMAScript.
Método 4: Verificar la compatibilidad del paquete
Algunos paquetes solo funcionan en ESM o CommonJS, por lo que es importante verificar su compatibilidad.
- Revisa la documentación del paquete en NPM.
- Si el paquete solo soporta ESM, usa
importy convierte tu código a módulos ECMAScript. - Si el paquete solo soporta CommonJS, mantén
require().
Consejos adicionales
✅ Usa import() dinámico si necesitas cargar módulos ESM en un entorno CommonJS:
✅ Si el error ocurre en un framework (Next.js, Vue, etc.), revisa su configuración de compatibilidad con ESM.
✅ Si usas TypeScript, verifica que tsconfig.json tenga "module": "ESNext" o "module": "CommonJS" según corresponda.
Si aún tienes dudas, puedes crear un ticket en el siguiente enlace:
Soporte Técnico
