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

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.


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.


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

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 .


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.


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á


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.


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

Isso funcionou para mim


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


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'


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.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.