Node.js ha estabilizado el soporte de ES Modules. La función require(esm) permite cargar módulos ESM desde CJS de forma síncrona, simplificando la migración.
require(esm) en Node.js 22+
Node.js 22+ permite require() de módulos ESM sincrónicamente si no tienen top-level await. Facilita la adopción híbrida.
Configuración
No requiere flags de línea de comandos. Los paquetes ESM deben declararse con "type": "module" o .mjs. require() resuelve automáticamente.
Limitaciones
Top-level await deshabilita require(esm). Paquetes ESM con solo named exports pueden necesitar ajustes. Los loaders personalizados afectan el comportamiento.
Recomendación
Proyectos nuevos: empieza con ESM. Proyectos existentes: migración gradual desde CJS. Paquetes publicados: ofrece dual CJS/ESM con exports condicionales.

