Node.JS: Error al obtener: [nodemon] Error interno de reloj: reloj ENOSPC


136

Acabo de instalar Node.jsen mi Ubuntu 14.04sistema operativo por primera vez. También lo instalé npm. El siguiente paso en mi proceso de instalación fue la instalación nodemon. Todo esto salió bien.


Pero, cuando ejecuto nodemonescribiendo nodemon app.jsmi línea de comando, aparece el siguiente error ...

[nodemon] 1.8.1 [nodemon] to restart at any time, enterrs [nodemon] watching: *.* [nodemon] startingnode app.js [nodemon] Internal watch failed: watch ENOSPC

En la línea de comando debajo del error ...

alopex@Alopex:~/Desktop/coding_dojo/week-9/javascript/node/testing_node$ Hello World

¿Por qué está pasando esto? ¿Es este comportamiento normal para nodemon? Si no, ¿cómo puedo solucionarlo?


Notas al margen ...

1) app.jses un Javascriptarchivo con console.log(111)dentro de él.
2) la nodeversión es v0.10.25
3) la npmversión es 1.3.10
4) la nodemonversión es 1.8.1
5) la ubuntuversión es ...

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:    14.04
Codename:   trusty

Respuestas:


451

Parece que mis puertos máximos no se configuraron correctamente. Ejecuté el siguiente código y funcionó ...

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

Lo que hace este comando es aumentar la cantidad de relojes permitidos para un solo usuario. Por defecto, el número puede ser bajo (8192 por ejemplo). Cuando nodemonintenta observar grandes cantidades de directorios para detectar cambios, tiene que crear varios relojes, que pueden superar ese límite.

También podría resolver este problema de la siguiente manera:

sudo sysctl fs.inotify.max_user_watches=582222 && sudo sysctl -p

Pero la forma en que se escribió primero hará que este cambio sea permanente.


66
¿Alguien podría explicar un poco más qué hace esto y explicar por qué podría ayudar?
Hinrich

11
@Hinrich, es solo una suposición, creo que nodejs observa los cambios del sistema de archivos a través de la biblioteca inotify. Creo que hay un límite por usuario para el número máximo de relojes, que esta configuración cambia a un valor mayor.
ᐅ devrimbaris

2
@devrimbaris ¡Correcto!
Erik Åsland

3
Me acaba de pasar después de pasar de Ubuntu 14.04 a Ubuntu 16.04. Tu solución también funcionó para mí. Gracias
Mestre San

2
Poner eso en /etc/sysctl.d/90-override.confsi estás en Arco
OverCoder

28

Erik, puedes matar todos los demás procesos de nodo por

pkill -f nodo

y luego reinicie su servidor nuevamente. Funcionará bien entonces.


77
Voto negativo porque esto también causó que mis ventanas de Visual Studio Code se congelaran.
LexH

esto funcionaba como un encanto ... hasta ahora! Ahora es ineficaz, obteniendo el mismo error.
Cernícalo

28

En ejecución, el servidor de nodo muestra los siguientes errores y soluciones:

nodemon server.js

[nodemon] 1.17.2

[nodemon] para reiniciar en cualquier momento, ingrese rs

[nodemon] observación: .

[nodemon] comenzando node server.js

[nodemon] Error interno de reloj: watch / home / aurum304 / jin ENOSPC

sudo pkill -f node

o

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

19

Según la discusión aquí , ENOSPCsignifica Error No more hard-disk space available. La razón por la que tanta memoria requerida por nodemono gulp-nodemon(en mi caso) es que estaba viendo el contenido de una carpeta que no debería. Para arreglar eso, nodemon tiene una ignoreconfiguración que se puede usar para decirle a nodemon qué no debe mirar. Echa un vistazo a la configuración de muestra de nodemon aquí .


Buen trabajo, esta es la causa raíz.
lutaoact

16
[nodemon] Internal watch failed: watch /home/Document/nmmExpressServer/bin ENOSPC
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! nmmexpressserver@0.0.0 start: `nodemon ./bin/www`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the nmmexpressserver@0.0.0 start script.

Este es el error que recibí al ejecutar nodemon ./bin/www.

La solución fue cerrar una ventana de Atom que tenía un directorio completo de carpetas abierto en la ventana del proyecto.

No sé por qué, pero supongo que Atom y nodemon usan procesos similares para ver archivos / carpetas.


2
Ese fue exactamente mi problema. Se me ocurrió lanzar el átomo desde el directorio de instalación del proyecto. Cerré el átomo, lo lancé desde un directorio diferente y el problema desapareció.
Ya

En mi caso, lo mismo estaba sucediendo en Sublime en Ubuntu. Cuando cerré el IDE, pude ejecutarlo correctamente. ¿Algún consejo al respecto?
Sábado

No he intentado replicarlo para ver si se ha solucionado.
codeinaire

Gracias. El mío puede funcionar después de cerrar Gitkraken. Este es un problema extraño. ¿Entonces eso significa que no podemos tener dos procesos monitoreando la misma carpeta?
Zhang LongQI

Fue el cliente de Nextcloud aquí, que usa una tonelada de relojes inotify. Gracias a todos!
Bill McGonigle

8

Prueba esto....

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

Funcionará desafiante


1
Me gusta la naturaleza rebelde de este desafío
SimplyKnownAsG

7

Agregue un nodemon.jsonarchivo de configuración en su carpeta raíz y especifique ignorar patrones, por ejemplo:

nodemon.json

{
  "ignore": [
    "*.test.js", 
    "dist/*"
  ]
}
  • Tenga en cuenta que de manera predeterminada .git, node_modules, bower_components, .nyc_output, coveragey .sass-cacheson ignorados por lo que no es necesario añadirlos a su configuración.

Explicación: Este error ocurre porque excedió el número máximo de observadores permitidos por su sistema (es decir, nodemonno tiene más espacio en el disco para ver todos los archivos, lo que probablemente significa que está viendo archivos no importantes). Por lo tanto, ignora los archivos no importantes que no le importan los cambios en ellos, por ejemplo, la salida de compilación o los casos de prueba.


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

Esto funciono para mi


1
Agregue una explicación de cómo esto responde la pregunta.
Jason Aller

Funcionó correctamente
Rohit Parte

3

en mi caso, cerrar el código de Visual Studio y luego iniciar el servidor hizo el truco

Sistema operativo - ubuntu 16.4 lts

Versión de node.js - 8.11.1

versión npm - 6.0.0


Parece que no estaba usando Visual Studio.
Julien Revault d'A ...

1
Aunque esto no responde directamente a la pregunta (porque la pregunta no involucra VS Code), sí resolvió mi problema.
Chasen Bettinger

2

En lugar de especificar una lista de directorios para ignorar (por ejemplo, negativo), también puede especificar una lista de directorios para ver (por ejemplo, positivo):

nodemon --watch dir1 --watch dir2  dir1/examples/index.js

En mi caso particular, tenía un directorio que quería ver y alrededor de nueve quería ignorar, por lo que especificar '--watch' era mucho más simple que especificar '--ignore'


0

Tuve el mismo error, pero en Ubuntu 14.04 dentro de Windows 10 (Bash en Ubuntu en Windows). Todo lo que hice para superar el error fue actualizar la actualización de Creators, que luego me permitió instalar la versión 16.04 de Ubuntu bash y luego, después de instalar la versión más nueva del nodo ( siguiendo estos pasos), instalé también la versión más nueva de npm y luego el nodomon comenzó a funcionar correctamente


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.