Nodemon: Un error "Error: ver ENOSPC"

Creado en 20 oct. 2013  ·  56Comentarios  ·  Fuente: remy/nodemon

20 Oct 16:40:37 - [nodemon] v0.7.10
20 Oct 16:40:37 - [nodemon] to restart at any time, enter `rs`
20 Oct 16:40:37 - [nodemon] watching: /my/proyect/server
20 Oct 16:40:37 - [nodemon] exception in nodemon killing node
Error: watch ENOSPC
    at errnoException (fs.js:1019:11)
    at FSWatcher.start (fs.js:1051:11)
    at Object.fs.watch (fs.js:1076:11)
    at Object.watchFileChecker.check (/usr/lib/node_modules/nodemon/nodemon.js:160:6)
    at ready (/usr/lib/node_modules/nodemon/nodemon.js:49:22)
    at /usr/lib/node_modules/nodemon/nodemon.js:63:11
    at ChildProcess.exithandler (child_process.js:641:7)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at maybeClose (child_process.js:735:16)
    at Socket.<anonymous> (child_process.js:948:11)
20 Oct 16:40:37 - [nodemon] reading ignore list
20 Oct 16:40:37 - [nodemon] exception in nodemon killing node
Error: watch ENOSPC
    at errnoException (fs.js:1019:11)
    at FSWatcher.start (fs.js:1051:11)
    at fs.watch (fs.js:1076:11)
    at checkTimer (/usr/lib/node_modules/nodemon/nodemon.js:467:27)
    at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)

Comentario más útil

El sistema tiene un límite en la cantidad de archivos que puede ver un usuario. Puede quedarse sin relojes bastante rápido si tiene Grunt ejecutándose con otros programas como Dropbox.

La publicación sugiere ejecutar esto para aumentar la cantidad de relojes que están disponibles.

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

Todos 56 comentarios

¿Versión de Node?

Además, ¿puede proporcionar un script de caso de prueba simple que esté usando (para probar)?

use el nodo 0.10.21. Con cualquier script, genera un error.

¿Es este el mismo problema que el # 144? No puedo replicar esto en mi mac (aunque no le pregunté qué sistema operativo tenía, pero asumí el tipo * nix según la ruta en su pasta anterior).

No es lo mismo, aquí son diferentes se está ejecutando un solo proceso. En el otro, se ejecuta en varios procesos, no en la nube.

Experimenté este error hoy con múltiples aplicaciones (express, restify).

NodeJS: v0.10.21
Versión de ElementaryOS: 0.2 "Luna" (64 bits)
Basado en: Ubuntu 12.04 ("Preciso")
Kernel 3.5.0-43-genérico

11 Nov 17:32:38 - [nodemon] v0.7.10
11 Nov 17:32:38 - [nodemon] to restart at any time, enter `rs`
...
11 Nov 17:32:38 - [nodemon] exception in nodemon killing node
Error: watch ENOSPC
    at errnoException (fs.js:1019:11)
    at FSWatcher.start (fs.js:1051:11)
    at Object.fs.watch (fs.js:1076:11)
    at Object.watchFileChecker.check (/home/.../node_modules/nodemon/nodemon.js:160:6)
    at ready (/home/.../node_modules/nodemon/nodemon.js:49:22)
    at /home/.../node_modules/nodemon/nodemon.js:63:11
    at ChildProcess.exithandler (child_process.js:641:7)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at maybeClose (child_process.js:735:16)
    at Socket.<anonymous> (child_process.js:948:11)

reproducir:

npm install nodemon
./node_modules/.bin/nodemon app.js

app.js (de http://nodejs.org/)

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

Tengo el mismo error con CoffeeScript --watch ./node_modules/.bin/coffee --watch app/

/home/.../node_modules/coffee-script/lib/coffee-script/command.js:334
        throw e;
              ^
Error: watch ENOSPC
    at errnoException (fs.js:1019:11)
    at FSWatcher.start (fs.js:1051:11)
    at Object.fs.watch (fs.js:1076:11)
    at watchDir (/home/.../node_modules/coffee-script/lib/coffee-script/command.js:299:27)
    at /home/.../node_modules/coffee-script/lib/coffee-script/command.js:102:11
    at Object.oncomplete (fs.js:107:15)

Recibí el mismo error con un proyecto compuesto.js usando coffeescript en Ubuntu 13.10 con el nodo 0.10.21

$ nodemon server.coffee

27 Nov 21:40:14 - [nodemon] v0.7.10
27 Nov 21:40:14 - [nodemon] to restart at any time, enter `rs`
27 Nov 21:40:14 - [nodemon] watching: /home/chok/work/edf/bluetic/src
27 Nov 21:40:14 - [nodemon] exception in nodemon killing node
Error: watch ENOSPC
    at errnoException (fs.js:1019:11)
    at FSWatcher.start (fs.js:1051:11)
    at Object.fs.watch (fs.js:1076:11)
    at Object.watchFileChecker.check (/usr/local/lib/node_modules/nodemon/nodemon.js:160:6)
    at ready (/usr/local/lib/node_modules/nodemon/nodemon.js:49:22)
    at /usr/local/lib/node_modules/nodemon/nodemon.js:63:11
    at ChildProcess.exithandler (child_process.js:641:7)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at maybeClose (child_process.js:735:16)
    at Socket.<anonymous> (child_process.js:948:11)

¿Alguien puede intentar esto con la versión dev de nodemon? Hice muchos cambios y estoy tratando de concentrar mis esfuerzos en asegurarme de que la nueva versión solucione todos estos problemas.

Puede instalar usando npm install -g nodemon@dev

Funciona para mí ahora no sé por qué. Usando la última versión estable de nodemon npm. También tuve el mismo problema con coffeescript: mira y esto también funciona ahora. Sin actualización de nodo, solo módulos de instalación npm y actualizaciones de distribución.

Tengo el mismo error pero el proceso se detiene:

$ nodemon server.coffee 
3 Dec 15:32:42 - [nodemon] v0.9.10
[nodemon] exception in nodemon killing node
[nodemon] Error: watch ENOSPC
    at errnoException (fs.js:1019:11)
    at FSWatcher.start (fs.js:1051:11)
    at Object.fs.watch (fs.js:1076:11)
    at Function.check (/usr/local/lib/node_modules/nodemon/lib/config/watchable.js:34:6)
    at alternativeCheck (/usr/local/lib/node_modules/nodemon/lib/config/checkWatchSupport.js:18:15)
    at /usr/local/lib/node_modules/nodemon/lib/config/checkWatchSupport.js:36:11
    at ChildProcess.exithandler (child_process.js:641:7)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at maybeClose (child_process.js:735:16)
    at Socket.<anonymous> (child_process.js:948:11)

@chok, ¿puedes ejecutar lo siguiente (y pegar el resultado) por mí en el mismo directorio en el que estás ejecutando nodemon?

find . | wc

Estoy tratando de hacerme una idea de la causa real de este problema.

Aquí está el resultado:

$ find . | wc
   7677    7677  542965

De acuerdo, son 7600 archivos que también están tratando de enlazar relojes.

¿Puedes ejecutar tree y poner el resultado en http://pastie.org/ (solo porque va a ser masivo)?

Pastie dijo que es demasiado grande (más de 64 kb) y, después de todo, no me gusta el texto de la parte inferior: p (Todas tus pastas nos pertenecen). Eliminé algunas partes específicas de mis proyectos. Por cierto, la mayoría de los archivos se encuentran, por supuesto, en node_modules.

Puede encontrarlo en gist: https://gist.github.com/chok/7774318

De acuerdo, creo que este es un problema completamente relacionado con la cantidad de archivos que se están monitoreando (ya que tiene que vincularlos a cada archivo individual). Estaba pensando en ignorar los directorios node_modules y .git de forma predeterminada, pero ¿puedes intentar hacerlo con el comando ignore (asumiendo que todavía estás ejecutando 0.9.x)?

nodemon -i node_modules

Por supuesto, esto no debería ser necesario hacer todo el tiempo, solo estoy tratando de confirmar que este es el problema.

No funciona :(

$ nodemon -i node_modules/ server.coffee 
3 Dec 20:52:32 - [nodemon] v0.9.10
[nodemon] exception in nodemon killing node
[nodemon] Error: watch ENOSPC
    at errnoException (fs.js:1019:11)
    at FSWatcher.start (fs.js:1051:11)
    at Object.fs.watch (fs.js:1076:11)
    at Function.check (/usr/local/lib/node_modules/nodemon/lib/config/watchable.js:34:6)
    at alternativeCheck (/usr/local/lib/node_modules/nodemon/lib/config/checkWatchSupport.js:18:15)
    at /usr/local/lib/node_modules/nodemon/lib/config/checkWatchSupport.js:36:11
    at ChildProcess.exithandler (child_process.js:641:7)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at maybeClose (child_process.js:735:16)
    at Socket.<anonymous> (child_process.js:948:11)

También intento:

$ nodemon -w app/* server.coffee 
3 Dec 20:53:32 - [nodemon] v0.9.10
[nodemon] exception in nodemon killing node
[nodemon] Error: watch ENOSPC
    at errnoException (fs.js:1019:11)
    at FSWatcher.start (fs.js:1051:11)
    at Object.fs.watch (fs.js:1076:11)
    at Function.check (/usr/local/lib/node_modules/nodemon/lib/config/watchable.js:34:6)
    at alternativeCheck (/usr/local/lib/node_modules/nodemon/lib/config/checkWatchSupport.js:18:15)
    at /usr/local/lib/node_modules/nodemon/lib/config/checkWatchSupport.js:36:11
    at ChildProcess.exithandler (child_process.js:641:7)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at maybeClose (child_process.js:735:16)
    at Socket.<anonymous> (child_process.js:948:11)

¿Puede ejecutar exactamente el mismo comando, pero agregue --dump y envíeme la respuesta (cuando esté haciendo la versión ignorada).

No hay cambio :

$ nodemon -i node_modules/ server.coffee  --dump
3 Dec 21:17:18 - [nodemon] v0.9.10
[nodemon] exception in nodemon killing node
[nodemon] Error: watch ENOSPC
    at errnoException (fs.js:1019:11)
    at FSWatcher.start (fs.js:1051:11)
    at Object.fs.watch (fs.js:1076:11)
    at Function.check (/usr/local/lib/node_modules/nodemon/lib/config/watchable.js:34:6)
    at alternativeCheck (/usr/local/lib/node_modules/nodemon/lib/config/checkWatchSupport.js:18:15)
    at /usr/local/lib/node_modules/nodemon/lib/config/checkWatchSupport.js:36:11
    at ChildProcess.exithandler (child_process.js:641:7)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at maybeClose (child_process.js:735:16)
    at Socket.<anonymous> (child_process.js:948:11)

Hmm, lo siento, ¿puedes pegar --dump antes de tu script? Debería darme un volcado de la configuración.

Ya probé ambos :(

$ nodemon -i node_modules/ --dump server.coffee 
3 Dec 21:25:35 - [nodemon] v0.9.10
[nodemon] exception in nodemon killing node
[nodemon] Error: watch ENOSPC
    at errnoException (fs.js:1019:11)
    at FSWatcher.start (fs.js:1051:11)
    at Object.fs.watch (fs.js:1076:11)
    at Function.check (/usr/local/lib/node_modules/nodemon/lib/config/watchable.js:34:6)
    at alternativeCheck (/usr/local/lib/node_modules/nodemon/lib/config/checkWatchSupport.js:18:15)
    at /usr/local/lib/node_modules/nodemon/lib/config/checkWatchSupport.js:36:11
    at ChildProcess.exithandler (child_process.js:641:7)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at maybeClose (child_process.js:735:16)
    at Socket.<anonymous> (child_process.js:948:11)

Hola. No quiero parecer obtuso, pero cuando encontré este error lo solucioné aumentando max_user_watches en mi sistema. He estado viendo este hilo para ver si pasaba algo más.

@taylorjbrennan sí, sé que eso solucionará el problema, pero aunque @chok es capaz de replicarse de manera consistente, busco un cambio que arregle nodemon sin que el usuario tenga que hacer la magia max_user_watches io.

@remy genial, espero con ansias verlo.

@chok, ¿puedes intentarlo de nuevo con [email protected] ? .

También voy a intentar detectar el error watch ENOSPC y hacer eco de un mensaje sobre el aumento de max_user_watches . No es ideal, pero nada más que pueda hacer realmente.

Ya no tengo este mensaje :) pero ahora tengo el problema explicado en # 245

Acabo de tener este problema y era un problema de demasiados archivos abiertos en el sistema. (A Sublime Text le encanta abrir muchos archivos si lo dejas)

Tan pronto como abro un directorio con muchos archivos en Sublime 2, nodemon ya no funciona y escupe el error al que se hace referencia. Solo pude solucionar eso al no usar la función de "carpeta abierta" de Sublimes. Gracias por la pista @ eyce9000.

@timtips lo mismo con sublimetext3 y nodemon v1.3.1

@baio, ¿puedes comprobarlo? No hay [email protected] , hay una versión preliminar @ 1.3.0-1, pero eso no está en producción en npm (¿puede confirmar también su versión de npm)?

¿Puede cerrar este error? Como nuevas versiones de nodemon y nodejs, se ha resuelto este problema, aunque no podría decir que esto esté completamente resuelto. Se puede decir que ya no ocurre con frecuencia.

@alejonext, ¿puedes probar con npm install -g nodemon@dev ? He realizado bastantes cambios que no están en 1.2.1.

El error en realidad significa "Error SIN ESPACIO DE DISCO", pero creo que está relacionado con la cantidad de archivos que se están monitoreando, que debería reducirse mediante cambios en el código de visualización ...

@remy funciona perfecto :) gracias por tu trabajo !!!!

Dulce. Habrá una versión estable de 1.3.0 a npm probablemente esta semana con un montón de correcciones de errores también.

@remy asombrado con el tiempo de respuesta. ¡Gracias!

@remy
excepción en el nodo de eliminación de nodemon
Error: mira ENOSPC
en errnoException (fs.js: 1030: 11)
en FSWatcher.start (fs.js: 1062: 11)
en Object.fs.watch (fs.js: 1087: 11)

nodo v0.10.33
SO: Linux ubuntu

He solucionado esto con este comando https://github.com/ember-cli/ember-cli/issues/1240#issuecomment -47855317

pero, ¿actualizar el paquete es la forma recomendada?

Me pregunto por qué se puso así en primer lugar. Estoy usando el administrador de versiones de nodo con
nodo 0.12.0
npm 2.7.0
brasa 0.2.0

El sistema tiene un límite en la cantidad de archivos que puede ver un usuario. Puede quedarse sin relojes bastante rápido si tiene Grunt ejecutándose con otros programas como Dropbox.

La publicación sugiere ejecutar esto para aumentar la cantidad de relojes que están disponibles.

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

Tengo este problema con "nodemon": "^1.4.1" y "node": "0.12.7" : decepcionado:

Intente con el n. ° 625

El martes, 8 de septiembre de 2015 a las 16:20 Wesley Queiroz [email protected] escribió:

Tengo este problema con "nodemon": "^ 1.4.1" y "node": "0.12.7" [imagen:
:decepcionado:]

-
Responda a este correo electrónico directamente o véalo en GitHub
https://github.com/remy/nodemon/issues/214#issuecomment -138598438.

Intenté con alpha pero aún obtengo ENOSPC ...
Mi sysctl.conf tiene fs.inotify.max_user_watches=10000 .
Si lo cambio a 524288 funciona, pero en mi "dev-server" no podré cambiarlo.

¿Cuántos archivos estás intentando ver? es decir, cuántos hay debajo de tu
¿directorio de trabajo?

El martes 8 de septiembre de 2015 a las 17:37 Wesley Queiroz [email protected] escribió:

Intenté con alpha pero aún obtengo ENOSPC ...
Mi sysctl.conf tiene fs.inotify.max_user_watches = 10000.
Si lo cambio a 524288 funciona, pero en mi "dev-server" no podré
para cambiarlo.

-
Responda a este correo electrónico directamente o véalo en GitHub
https://github.com/remy/nodemon/issues/214#issuecomment -138624285.

No muchos, 30 como máximo.
Pero creo que nodemon está tratando de ver node_modules en la raíz del proyecto.
A continuación se muestra la configuración pasada a nodemon (la estoy usando como un módulo de nodo):

nodemon({
    script: 'server/server.js',
    watch: [
        'server/',
        'common/'
    ],
    ext: 'js json coffee'
});

la carpeta del servidor tiene:
7 archivos de café
5 archivos json
y la carpeta común tiene solo 1 archivo json ...

Sí ... así que ejecuta find . | wc -l y ¿qué te da ese número? Aunque se supone que debe ignorar node_modules de forma predeterminada, es posible que no se tenga en cuenta.

Ejecutar find . | wc -l en la raíz del proyecto me da 18266 pero cuando elimino node_modules y bower_components da solo 320 .

Bien, entonces creo que el reloj _es_ incluye el node_modules - esto es parte del refactor # 625 y necesita ser arreglado.

@wesleycoder, ¿puedes probar con el último nodemon@dev (debería ser la versión 1.5.0-alpha4 ) y ejecutarlo con DEBUG=nodemon <your normal nodemon command> luego pegar el resultado completo?

¡Guau!
¡Funciona!
¡Sin errores!
¡Gracias!

Esto puede deberse a que su sistema no puede ver archivos por parte del usuario. puedes usar la siguiente línea de comando en ubuntu
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
o tratar
npm dedupe

Ref a este stackoverflow

@ankibalyan @uttampanara

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

¡Funciona para mí también!
echo fs.inotify.max_user_watches = 524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Aquí igual ! : +1:
echo fs.inotify.max_user_watches = 524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Ejecuta este comando

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

Otra posible solución es agregar un archivo de configuración nodemon.json en su carpeta raíz y especificar patrones de ignorar, por ejemplo:
nodemon.json

{
  "ignore": [
    "*.test.js", 
    "dist/*"
  ]
}
  • Tenga en cuenta que, de forma predeterminada, .git , node_modules , bower_components , .nyc_output , coverage y .sass-cache se ignoran, por lo que no No es necesario agregarlos a su configuración.

El truco de notificación fs no parece funcionar en un contenedor docker ... al menos no Alpine 3.8, obtengo el mismo error ENOSPC. Se está volviendo más importante a medida que las herramientas se vuelven obsoletas y aún necesitamos mantener los productos heredados.

¿Fue útil esta página
0 / 5 - 0 calificaciones