Nodemon: Um erro "Erro: assistir ENOSPC"

Criado em 20 out. 2013  ·  56Comentários  ·  Fonte: 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)

Comentários muito úteis

O sistema tem um limite de quantos arquivos podem ser vistos por um usuário. Você pode ficar sem relógios muito rapidamente se o Grunt estiver rodando com outros programas como o Dropbox.

A postagem sugere executar isso para aumentar o número de relógios disponíveis.

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

Todos 56 comentários

Versão do Node?

Além disso, você pode fornecer um script de caso de teste simples que está usando (para testar).

use o Nó 0.10.21. Com qualquer script, gera um erro.

Este é o mesmo problema que o # 144? Não consigo replicar isso no meu mac (embora eu não pergunte qual sistema operacional você tem, mas assumi o tipo * nix com base no caminho em sua pasta acima).

Diferentes, são diferentes aqui está executando um único processo. No outro é executado em processo múltiplo, não em nuvem

Experimentou este erro hoje com vários aplicativos (expresso, restificar).

NodeJS: v0.10.21
Versão ElementaryOS: 0.2 "Luna" (64 bits)
Construído em: 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)

reproduzir:

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/');

Recebi o mesmo erro com CoffeeScript - assistir ./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)

Recebi o mesmo erro com um projeto de composite.js usando coffeescript no Ubuntu 13.10 com node 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)

Alguém pode tentar isso com a versão dev do nodemon? Fiz muitas mudanças e estou tentando concentrar meus esforços em garantir que a nova versão resolva todos esses problemas.

Você pode instalar usando npm install -g nodemon@dev

Funciona para mim agora não sei por quê. Usando a última versão estável do NPM do Nodemon. Também tive o mesmo problema com o coffeescript --watch e agora também funciona. Nenhuma atualização de nó, apenas módulos de instalação npm e atualizações de distro.

Eu tenho o mesmo erro, mas o processo para:

$ 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 você pode executar o seguinte (e colar o resultado) para mim no mesmo diretório em que está executando o nodemon:

find . | wc

Estou tentando ter uma ideia do que está realmente causando esse problema.

Aqui está o resultado:

$ find . | wc
   7677    7677  542965

Ok, são 7600 arquivos que ele está tentando vincular aos relógios também.

Você pode executar tree e colocar o resultado em http://pastie.org/ (apenas porque será massivo).

Pastie disse que é muito grande (mais de 64kb) e afinal não gostei do texto do rodapé: p (todas as suas pastas são nos pertencem.). Removi algumas partes específicas dos meus projetos. A propósito, a maioria dos arquivos estão, é claro, localizados em node_modules.

Você pode encontrá-lo em gist: https://gist.github.com/chok/7774318

Ok, eu _ acho_ que este é um problema totalmente ligado ao número de arquivos que estão sendo monitorados (já que você tem que vincular a cada arquivo individual). Eu estava pensando em ignorar os diretórios node_modules e .git por padrão, mas você pode tentar fazer isso com o comando ignore (supondo que você ainda esteja executando 0.9.x):

nodemon -i node_modules

É claro que isso não precisa ser feito todas as vezes, estou apenas tentando confirmar que esse é o problema.

Não 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)

Eu também tento:

$ 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)

Você pode executar exatamente o mesmo comando, mas adicionar --dump e me enviar a resposta (quando você estiver fazendo a versão para ignorar).

Não há mudança:

$ 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, desculpe, você pode colocar --dump antes do seu script, ele deve me dar um dump da configuração.

Já tentei os dois :(

$ 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)

Oi. Não quero parecer obtuso, mas quando encontrei esse erro, corrigi-o aumentando max_user_watches no meu sistema. Estive observando este tópico para ver se algo mais estava acontecendo.

@taylorjbrennan sim, eu sei que isso resolverá o problema, mas embora @chok seja capaz de se replicar de forma consistente, estou em busca de uma mudança que consertará o nodemon sem que o usuário precise fazer a mágica max_user_watches io.

@remy ótimo, estou ansioso para vê-lo.

@chok, você pode tentar novamente com [email protected] - nodemon agora ignora .git e node_modules / ** / node_modules por padrão, então o número de relógios deve ser significativamente menor (eu reabrirei se isso ainda for um problema) .

Também tentarei detectar o erro watch ENOSPC e enviar uma mensagem sobre o aumento de max_user_watches . Não é o ideal, mas nada mais que eu possa realmente fazer.

Não tenho mais esta mensagem :) mas agora tenho o problema explicado em # 245

Acabei de ter esse problema e era um problema de muitos arquivos abertos no sistema. (Sublime Text adora abrir muitos arquivos, se você permitir)

Assim que eu abro um diretório com muitos arquivos no Sublime 2, o nodemon não funciona mais e cospe o erro referenciado. Eu só fui capaz de contornar isso não usando o recurso de "pasta aberta" do Sublimes. Obrigado pela dica @ eyce9000.

@timtips mesmo com sublimetext3 e nodemon v1.3.1

@baio, você pode verificar isso. Não há [email protected] - há um pré-lançamento @ 1.3.0-1 - mas ele não está em produção no npm (você também pode confirmar sua versão npm)?

Ele pode fechar esse bug? Como novas versões de nodemon e nodejs, foram resolvidos este problema, embora eu não pudesse dizer que estava totalmente resolvido. Pode-se dizer que não ocorre mais com frequência.

@alejonext você pode tentar com npm install -g nodemon@dev - Eu fiz algumas mudanças que não estão no 1.2.1.

O erro, na verdade, significa "Erro, SEM SPaCe de disco" - mas acho que está vinculado ao número de arquivos sendo monitorados, que deve ser reduzido por meio de alterações no código de observação ...

@remy Funciona perfeitamente :) obrigado pelo seu trabalho !!!!

Doce. Haverá uma versão estável de 1.3.0 para npm provavelmente esta semana com um monte de correções de bugs também.

@remy surpreso com o tempo de resposta. Obrigado!

@remy
exceção no nó matador do nodemon
Erro: assistir ENOSPC
em errnoException (fs.js: 1030: 11)
em FSWatcher.start (fs.js: 1062: 11)
em Object.fs.watch (fs.js: 1087: 11)

nó v0.10.33
SO: Linux ubuntu

Corrigi isso com este comando https://github.com/ember-cli/ember-cli/issues/1240#issuecomment -47855317

mas atualizar o pacote é a maneira recomendada?

Estou me perguntando por que ficou assim em primeiro lugar. Estou usando o gerenciador de versão de nó com
nó 0.12.0
npm 2.7.0
brasa 0.2.0

O sistema tem um limite de quantos arquivos podem ser vistos por um usuário. Você pode ficar sem relógios muito rapidamente se o Grunt estiver rodando com outros programas como o Dropbox.

A postagem sugere executar isso para aumentar o número de relógios disponíveis.

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

Estou tendo este problema com "nodemon": "^1.4.1" e "node": "0.12.7" : desapontado:

Por favor, tente com # 625

Na terça-feira, 8 de setembro de 2015 16:20 Wesley Queiroz [email protected] escreveu:

Estou tendo esse problema com "nodemon": "^ 1.4.1" e "node": "0.12.7" [imagem:
: desapontado:]

-
Responda a este e-mail diretamente ou visualize-o no GitHub
https://github.com/remy/nodemon/issues/214#issuecomment -138598438.

Tentei com alpha mas ainda obtive ENOSPC ...
Meu sysctl.conf tem fs.inotify.max_user_watches=10000 .
Se eu mudar para 524288 , funciona, mas no meu "dev-server" não poderei mudar.

Quantos arquivos você está tentando assistir? ou seja, quantos estão sob o seu
diretório de trabalho?

Na terça-feira, 8 de setembro de 2015 às 17:37 Wesley Queiroz [email protected] escreveu:

Tentei com alfa, mas ainda obtendo ENOSPC ...
Meu sysctl.conf tem fs.inotify.max_user_watches = 10000.
Se eu mudar para 524288 funciona, mas no meu "dev-server" não vou conseguir
para mudar isso.

-
Responda a este e-mail diretamente ou visualize-o no GitHub
https://github.com/remy/nodemon/issues/214#issuecomment -138624285.

Não muitos, 30 no máximo.
Mas eu acho que o nodemon está tentando assistir node_modules na raiz do projeto.
Abaixo está a configuração passada para nodemon (estou usando-a como um módulo de nó):

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

a pasta do servidor tem:
7 limas de café
5 arquivos json
e a pasta comum tem apenas 1 arquivo json ...

Sim ... então execute find . | wc -l e o que esse número dá a você? Porém, ele deve ignorar node_modules por padrão, é possível que não esteja sendo levado em consideração.

Executar find . | wc -l na raiz do projeto me dá 18266 mas quando eu removo node_modules e bower_components dá apenas 320 .

Ok, então acho que o relógio _está_ incluindo node_modules - isso faz parte do refatorador # 625 e precisa ser consertado.

@wesleycoder você pode tentar com o nodemon@dev mais recente (deve ser a versão 1.5.0-alpha4 ) e executar com DEBUG=nodemon <your normal nodemon command> e colar a saída completa.

Uau!
Funciona!
Sem erros!
Obrigado!

Isso pode ser devido ao alcance do seu sistema fora do alcance do usuário pode assistir os arquivos. você pode usar a seguinte linha de comando no ubuntu
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
ou tente
npm dedupe

Refira-se a este stackoverflow

@ankibalyan @uttampanara

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

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

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

Execute este comando

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

Outra solução possível é adicionar um arquivo de configuração nodemon.json em sua pasta raiz e especificar padrões de ignorar, por exemplo:
nodemon.json

{
  "ignore": [
    "*.test.js", 
    "dist/*"
  ]
}
  • Observe que, por padrão, .git , node_modules , bower_components , .nyc_output , coverage e .sass-cache são ignorados, então você não não precisa adicioná-los à sua configuração.

O truque de notificação do fs não parece funcionar em um contêiner docker ... pelo menos não no Alpine 3.8, recebo o mesmo erro ENOSPC. Está se tornando mais importante à medida que as ferramentas se tornam obsoletas e ainda precisamos manter os produtos legados

Esta página foi útil?
0 / 5 - 0 avaliações