Node.JS: Obtendo o erro: [nodemon] A inspeção interna falhou: observe ENOSPC

136

Acabei de instalar Node.jsno meu Ubuntu 14.04sistema operacional pela primeira vez. Eu também instalei npm. A próxima etapa do meu processo de instalação foi a instalação nodemon. Tudo funcionou bem.


Mas, quando executo nodemondigitando nodemon app.jsminha linha de comando, recebo o seguinte erro ...

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

Na linha de comando abaixo do erro ...

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

Por que isso está acontecendo? Esse comportamento é normal para nodemon? Caso contrário, como posso corrigi-lo?


Notas laterais ...

1) app.jsé um Javascriptarquivo com console.log(111)dentro dele.
2) nodeversão é v0.10.25
3) npmversão é 1.3.10
4) nodemonversão é 1.8.1
5) ubuntuversão é ...

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:    14.04
Codename:   trusty
Erik Åsland
fonte

Respostas:

451

Parece que minhas portas máximas não foram configuradas corretamente. Corri o código a seguir e funcionou ...

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

O que esse comando faz é aumentar o número de relógios permitidos para um único usuário. Por padrão, o número pode ser baixo (8192, por exemplo). Quando nodemontenta observar um grande número de diretórios em busca de alterações, ele precisa criar vários relógios, o que pode ultrapassar esse limite.

Você também pode resolver esse problema:

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

Mas a maneira como foi escrita primeiro tornará essa mudança permanente.

Erik Åsland
fonte
6
Alguém poderia explicar um pouco mais o que isso faz e explicar por que isso poderia ajudar?
Hinrich
11
@Hinrich, é apenas um palpite, acho que o nodejs observa as alterações no sistema de arquivos via inotify library. Eu acho que há um limite por usuário para o número máximo de relógios, que essa configuração muda para um valor maior.
ᐅ devrimbaris
2
@devrimbaris Correct!
Erik Åsland
3
Aconteceu comigo depois de passar do Ubuntu 14.04 para o Ubuntu 16.04. Sua solução funcionou para mim também. Obrigado
Mestre San
2
Coloque isso /etc/sysctl.d/90-override.confse você estiver em Arch
OverCoder 6/17/17
28

Erik, você pode simplesmente matar todos os outros processos do nó

nó pkill -f

e, em seguida, reinicie o servidor novamente. Vai funcionar muito bem então.

pawanpandey392
fonte
7
Votos negativos porque isso também fez com que minhas janelas do Visual Studio Code congelassem.
LexH 22/05/19
isso estava funcionando como um encanto ... até agora! Agora é ineficaz, recebendo o mesmo erro.
kestrel
28

Em execução, o servidor do nó mostra os seguintes erros e soluções:

nodemon server.js

[nodemon] 1.17.2

[nodemon] para reiniciar a qualquer momento, digite rs

[nodemon] observação: .

[nodemon] começando node server.js

[nodemon] O relógio interno falhou: watch / home / aurum304 / jin ENOSPC

sudo pkill -f node

ou

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Mani Abi Anand
fonte
19

Conforme a discussão aqui , ENOSPCsignifica Error No more hard-disk space available. Razão pela qual tanta memória exigida por ( nodemonou gulp-nodemonno meu caso) é que ele estava assistindo o conteúdo de uma pasta, o que não deveria. Para corrigir esse nodemon, tem uma ignoreconfiguração que pode ser usada para dizer ao nodemon o que não assistir. Dê uma olhada no exemplo de configuração do nodemon aqui .

Zubair Alam
fonte
Bom trabalho, esta é a causa raiz.
22318 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 é o erro que recebi ao executar nodemon ./bin/www.

A solução foi fechar uma janela Atom que tinha um diretório inteiro de pastas abertas na janela do projeto.

Não sei por que, mas estou assumindo que o Atom e o nodemon usem processos semelhantes para assistir arquivos / pastas.

codeinaire
fonte
2
Esse foi exatamente o meu problema. Estou feliz em lançar o atom a partir do diretório de instalação do projeto. Fechei o átomo, o lancei de um diretório diferente e o problema desapareceu.
Ya.
No meu caso, o mesmo estava acontecendo no Sublime no Ubuntu. Quando fechei o IDE, eu poderia executá-lo corretamente. Alguma dica sobre isso?
Shad
Eu não tentei replicá-lo para ver se foi corrigido.
codeinaire
Obrigado. O meu pode funcionar depois que eu fechar o Gitkraken. Este é um problema estranho. Então isso significa que não podemos ter dois processos monitorando a mesma pasta?
usar o seguinte código
Era o cliente Nextcloud aqui - que usa uma tonelada de relógios inotify. Obrigado a todos!
Bill McGonigle
8

Tente isso ....

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

Desafiadoramente funcionará

MD SHAYON
fonte
1
Eu gosto da natureza rebelde deste desafio
SimplyKnownAsG
7

Adicione um nodemon.jsonarquivo de configuração à sua pasta raiz e especifique padrões de ignorar, por exemplo:

nodemon.json

{
  "ignore": [
    "*.test.js", 
    "dist/*"
  ]
}
  • Note que, por padrão .git, node_modules, bower_components, .nyc_output, coveragee .sass-cachesão ignoradas, assim você não precisa adicioná-los à sua configuração.

Explicação: Esse erro ocorre porque você excedeu o número máximo de observadores permitidos pelo seu sistema (ou seja nodemon, não possui mais espaço em disco para assistir a todos os arquivos - o que provavelmente significa que você não está assistindo a arquivos importantes). Portanto, você ignora arquivos não importantes que não se importam com alterações neles, por exemplo, a saída de construção ou os casos de teste.

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

Isso funcionou para mim

iClass Chima
fonte
1
Por favor, adicione uma explicação de como isso responde à pergunta.
Jason Aller
Funcionou corretamente
Rohit Parte
3

no meu caso, fechar o código do visual studio e iniciar o servidor fez o truque

Sistema operacional - ubuntu 16.4 lts

versão do node.js. - 8.11.1

versão npm - 6.0.0

Vishal Verma
fonte
Parece que ele não estava usando o visual studio.
Julien Revault d'A ... 5/03/19
1
Embora isso não responda diretamente à pergunta (porque ela não envolve o código VS), isso resolveu meu problema.
Chasen Bettinger
2

Em vez de especificar uma lista de diretórios a serem ignorados (por exemplo, negativos), você também pode especificar uma lista de diretórios a serem observados (por exemplo, positivos):

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

No meu caso particular, eu tinha um diretório que queria assistir e cerca de nove queria ignorar, portanto, especificar '--watch' era muito mais simples do que especificar '--ignore'

vt5491
fonte
0

Eu tive o mesmo erro, mas no Ubuntu 14.04 dentro do Windows 10 (Bash no Ubuntu no Windows). Tudo o que fiz para superar o erro foi atualizar a atualização Creators, que me permitiu instalar a versão 16.04 do Ubuntu bash e depois de instalar a versão mais recente do node (por estas etapas), instalei também a versão mais recente do npm e, em seguida, o nodemon começou a funcionar corretamente.

Šimon Hrabec
fonte
0

Se o sistema operacional for Linux, basta usá-lo.

 sudo npm run server
Siddhartha Mukherjee
fonte