Node.js lanza ERR_REQUIRE_ESM cuando una llamada CommonJS require() intenta cargar un Módulo ES. CommonJS y los Módulos ES tienen mecanismos de carga diferentes, y Node.js no permite que require() sincrónico cargue Módulos ES asíncronos.
Por qué ocurre
- •Un paquete popular (chalk, node-fetch, etc.) lanzó una nueva versión mayor como solo ESM.
- •Un archivo .mjs o un paquete con 'type': 'module' es requerido desde un módulo CommonJS.
- •Migrar un proyecto a ESM parcialmente y mezclar require() e import.
Ejemplos
Código que causa el error
// In a CommonJS file (.js without "type":"module")
const chalk = require("chalk"); // chalk v5+ is ESM-onlyError en la terminal
Error [ERR_REQUIRE_ESM]: require() of ES Module node_modules/chalk/source/index.js not supported. Instead change the require of index.js in ... to a dynamic import() which is available in all CommonJS modules.
Cómo solucionarlo
Reemplaza require() con import() dinámico: const mod = await import('pkg'). Alternativamente, fija la última versión CommonJS del paquete (ej. chalk@4). Para proyectos nuevos, migra completamente a ESM agregando 'type': 'module' a package.json.
Código corregido
// Option 1: use dynamic import
const chalk = await import("chalk").then(m => m.default);
// Option 2: downgrade to a CommonJS version (e.g. chalk@4)
// npm install chalk@4Errores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis