Error nativo de React: ENOSPC: se alcanzó el límite del sistema para la cantidad de observadores de archivos

Resuelto Badis Merabet asked hace 5 años • 36 respuestas

He configurado una nueva aplicación nativa de reacción en blanco.

Después de instalar algunos módulos de nodo, recibí este error.

Running application on PGN518.
internal/fs/watchers.js:173
   throw error;
   ^

Error: ENOSPC: System limit for number of file watchers reached, watch '/home/badis/Desktop/react-native/albums/node_modules/.staging'
   at FSWatcher.start (internal/fs/watchers.js:165:26)
   at Object.watch (fs.js:1253:11)
   at NodeWatcher.watchdir (/home/badis/Desktop/react-native/albums/node modules/sane/src/node watcher. js:175:20)
   at NodeWatcher.<anonymous> (/home/badis/Desktop/react-native/albums/node modules/sane/src/node watcher. js:310:16)
   at /home/badis/Desktop/react-native/albums/node modules/graceful-fs/polyfills.js:285:20
   at FSReqWrap.oncomplete (fs.js:154:5)

Sé que está relacionado con la falta de espacio suficiente para que Watchman observe todos los cambios de archivos.

Quiero saber cuál es el mejor curso de acción a seguir aquí.

¿ Debo ignorar node_modulesla carpeta agregándola .watchmanconfig?

Badis Merabet avatar Apr 19 '19 21:04 Badis Merabet
Aceptado

Linux usa el paquete inotify para observar eventos del sistema de archivos, archivos individuales o directorios.

Dado que React/Angular recarga y recompila archivos en caliente al guardarlos, necesita realizar un seguimiento de todos los archivos del proyecto. Aumentar el límite de vigilancia de inotify debería ocultar los mensajes de advertencia.

Podrías intentar editar

# insert the new value into the system config
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

# check that the new value was applied
cat /proc/sys/fs/inotify/max_user_watches

# config variable name (not runnable)
fs.inotify.max_user_watches=524288

Problema real

Sin embargo, añadir más guardias es poner el carro delante del caballo. Para obtener más información sobre la solución real, lea esta respuesta: https://stackoverflow.com/a/77578694/6513173

Abdulla Thanseeh avatar Apr 19 '2019 14:04 Abdulla Thanseeh

El error se produce porque la cantidad de archivos monitoreados por el sistema ha alcanzado el límite.

Resultado: ¡ El comando ejecutado falló! O se muestra una advertencia (como ejecutar un VSCode de inicio nativo de reacción)

Solución:

Modifique la cantidad de archivos de monitoreo del sistema:

Ubuntu:

sudo gedit /etc/sysctl.conf

Agregue una línea en la parte inferior:

fs.inotify.max_user_watches=524288

¡Luego guarda y sal! Correr:

sudo sysctl -p

para comprobarlo.

YASH THUMAR avatar May 15 '2019 18:05 YASH THUMAR

Puedes solucionarlo aumentando la cantidad de observadores de inotify.

Si no estás interesado en los detalles técnicos y solo quieres que Listen funcione:

  • Si está ejecutando Debian, RedHat u otra distribución de Linux similar, ejecute lo siguiente en una terminal:

    $ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

  • Si está ejecutando ArchLinux, ejecute el siguiente comando en su lugar

    $ echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system

Luego pégalo en tu terminal y presiona Enter para ejecutarlo.


Los detalles técnicos

Listen utiliza inotify de forma predeterminada en Linux para monitorear los directorios en busca de cambios. No es raro encontrar un límite del sistema en la cantidad de archivos que puede monitorear. Por ejemplo, el límite de notificación de Ubuntu Lucid (64 bits) está establecido en 8192.

Puede obtener su límite actual de visualización de archivos de inotify ejecutando:

$ cat /proc/sys/fs/inotify/max_user_watches

Cuando este límite no es suficiente para monitorear todos los archivos dentro de un directorio, se debe aumentar el límite para que Listen funcione correctamente.

Puedes establecer un nuevo límite temporal con:

$ sudo sysctl fs.inotify.max_user_watches=524288
$ sudo sysctl -p

Si desea que su límite sea permanente, utilice:

$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p

También es posible que deba prestar atención a los valores de max_queued_eventsy max_user_instancessi escucha sigue quejándose.

snishalaka avatar Oct 03 '2019 06:10 snishalaka