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
Erik Åsland
fuente

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.

Erik Åsland
fuente
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.

pawanpandey392
fuente
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
Mani Abi Anand
fuente
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í .

Zubair Alam
fuente
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.

codeinaire
fuente
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

MD SHAYON
fuente
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.

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

Esto funciono para mi

iClass Chima
fuente
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

Vishal Verma
fuente
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'

vt5491
fuente
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

Šimon Hrabec
fuente
0

Si el sistema operativo es Linux, simplemente utilícelo y funcionará

 sudo npm run server
Siddhartha Mukherjee
fuente