Hola a todos. Sé que ha pasado bastante tiempo desde mi última publicación, pero llevaba meses peleando con un problema de desarrollo y por fin esta mañana encontré una solución sencilla y eficaz.
Este fallo afecta sobre todo a escritorios Linux, aunque también puede darse en Mac.
El síntoma típico aparece cuando tienes muchas pestañas del navegador abiertas (Chrome, Firefox, Opera, etc.) y ejecutas npm run dev en un proyecto Node. De repente empiezan a salir decenas o cientos de mensajes del estilo: Watchpack Error watcher EMFILE too many open files watch ruta. En proyectos con NextJS el log puede repetirse sin parar; en otros entornos npm puede terminarse de forma abrupta.
La solución clásica que verás en foros consiste en cambiar el límite de archivos abiertos del usuario con ulimit. En mi caso no resolvió el problema. Si usas VScode quizá te suene algo parecido, a veces propone comandos sysctl para ajustar límites del sistema.
Qué provoca EMFILE en Webpack y herramientas de desarrollo: al levantar el servidor de desarrollo, Webpack y sus watchers abren muchos descriptores de archivo para monitorizar cambios. Cuando el sistema alcanza el límite permitido, aparecen los errores EMFILE too many open files. Es especialmente común en proyectos React que dependen intensivamente de Webpack y en sesiones con muchos procesos y pestañas abiertas.
La solución práctica que me funcionó en Linux fue activar el modo de sondeo de Watchpack. Antes de ejecutar npm, establece la variable de entorno WATCHPACK_POLLING=true. Para una sola ejecución puedes usar: WATCHPACK_POLLING=true npm run dev. Si quieres aplicarlo a toda la sesión de la terminal: export WATCHPACK_POLLING=true. También puedes añadir esa línea a tu archivo de inicio de shell, por ejemplo .bashrc, para que quede persistente.
Con esto, el watcher hace polling en lugar de abrir tantos descriptores simultáneamente, evitando el límite y manteniendo tu entorno de desarrollo estable incluso con muchas aplicaciones abiertas.
Si aun así necesitas exprimir al máximo el sistema, además del cambio anterior puedes revisar la configuración del sistema relacionada con los watchers y descriptores abiertos mediante sysctl y límites por usuario, pero la variable WATCHPACK_POLLING=true suele ser el atajo más rápido y seguro para seguir trabajando sin cerrar tus aplicaciones.
En Q2BSTUDIO ayudamos a equipos técnicos a crear y mantener entornos de desarrollo robustos y eficientes, y a construir software a medida y aplicaciones a medida que escalan sin sorpresas. Si buscas una hoja de ruta tecnológica que combine buenas prácticas DevOps con desarrollo multiplataforma, visita nuestra página de desarrollo de software a medida. También diseñamos arquitecturas resilientes con servicios cloud aws y azure para que tus pipelines y servidores de desarrollo funcionen de forma predecible en cualquier entorno, descubre más en servicios cloud.
Somos especialistas en inteligencia artificial e ia para empresas, agentes IA, ciberseguridad y pentesting, servicios inteligencia de negocio y power bi, además de automatización de procesos. Si tu organización necesita una base técnica sólida para innovar con inteligencia artificial o reforzar su ciberseguridad sin comprometer la productividad del equipo, cuenta con Q2BSTUDIO.
Espero que esta guía para evitar el error Too many open files en NodeJS te resulte útil. Con un simple ajuste del watcher podrás seguir iterando sin fricción y con tu stack completo abierto.