Node.JS: Pobieranie błędu: [nodemon] Błąd wewnętrznego nasłuchu: obserwuj ENOSPC

141

Właśnie zainstalowałem Node.jsw swoim Ubuntu 14.04systemie operacyjnym po raz pierwszy. Zainstalowałem też npm. Kolejnym krokiem w procesie instalacji była instalacja nodemon. Wszystko się udało.


Ale kiedy uruchamiam nodemon, wpisując nodemon app.jsw wierszu poleceń , pojawia się następujący błąd ...

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

W linii poleceń poniżej błąd ...

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

Dlaczego to się dzieje? Czy to normalne zachowanie nodemona? Jeśli nie, jak mogę to naprawić?


Dodatkowe uwagi ...

1) app.jsto Javascriptplik zawierający console.log(111)wewnątrz.
2) nodewersja to v0.10.25
3) npmwersja to 1.3.10
4) nodemonwersja to 1.8.1
5) ubuntuwersja to ...

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:    14.04
Codename:   trusty
Erik Åsland
źródło

Odpowiedzi:

461

Wygląda na to, że moje maksymalne porty nie zostały poprawnie skonfigurowane. Uruchomiłem następujący kod i zadziałało ...

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

To polecenie powoduje zwiększenie liczby zegarków dozwolonych dla jednego użytkownika. Domyślnie liczba może być niska (na przykład 8192). Kiedy nodemonpróbuje przeglądać dużą liczbę katalogów pod kątem zmian, musi utworzyć kilka zegarków, które mogą przekroczyć ten limit.

Możesz również rozwiązać ten problem poprzez:

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

Ale sposób, w jaki został napisany pierwszy, sprawi, że ta zmiana będzie trwała.

Erik Åsland
źródło
6
Czy mógłby ktoś wyjaśnić trochę więcej, co to robi i wyjaśnić, dlaczego może to pomóc?
Hinrich
11
@Hinrich, to tylko przypuszczenie, myślę, że nodejs obserwuje zmiany systemu plików za pośrednictwem biblioteki inotify. Myślę, że istnieje limit maksymalnej liczby zegarków na użytkownika, który to ustawienie zmienia na większą wartość.
ᐅ devrimbaris
2
@devrimbaris Dobrze!
Erik Åsland
3
Przydarzyło mi się to po przejściu z Ubuntu 14.04 na Ubuntu 16.04. Twoje rozwiązanie zadziałało również dla mnie. Dziękuję
Mestre San
2
/etc/sysctl.d/90-override.conf
Włącz
32

Na działającym serwerze węzła wyświetla następujące błędy i rozwiązania:

nodemon server.js

[nodemon] 1.17.2

[nodemon], aby zrestartować w dowolnym momencie, enter rs

[nodemon] Obserwacja: .

[nodemon] zaczyna node server.js

[nodemon] Błąd wewnętrznego zegarka: watch / home / aurum304 / jin ENOSPC

sudo pkill -f node

lub

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Mani Abi Anand
źródło
28

Erik, możesz po prostu zabić wszystkie inne procesy węzłów przez

pkill -f węzeł

a następnie ponownie uruchom serwer. Wtedy będzie działać dobrze.

pawanpandey392
źródło
10
Głosuj przeciw, ponieważ spowodowało to również zawieszenie moich okien programu Visual Studio Code.
LexH
to działało jak urok ... aż do teraz! Teraz jest nieskuteczny, otrzymując ten sam błąd.
pustułka
Jeśli masz wiele rzeczy działających z węzłem, spowoduje to zatrzymanie ich wszystkich. Jest to szczególnie kłopotliwe, jeśli masz uruchomiony zarówno klient, jak i serwer.
Paul J
19

Zgodnie z dyskusją tutaj , ENOSPCoznacza Error No more hard-disk space available. Powodem, dla którego tak dużo pamięci wymaga nodemonlub gulp-nodemon(w moim przypadku) jest to, że obserwował zawartość folderu, którego nie powinien. Aby naprawić ten nodemon ma ignoreustawienie, które może być użyte do powiedzenia nodemonowi, czego nie ma oglądać. Spójrz na przykładową konfigurację nodemon tutaj .

Zubair Alam
źródło
Dobra robota, to jest główna przyczyna.
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.

To jest błąd, który otrzymałem podczas uruchamiania nodemon ./bin/www.

Rozwiązaniem było zamknięcie okna Atom, które miało cały katalog folderów otwarty w oknie projektu.

Nie wiem dlaczego, ale zakładam, że Atom i nodemon używają podobnych procesów do oglądania plików / folderów.

Codeinaire
źródło
2
To był dokładnie mój problem. Udało mi się uruchomić atom z katalogu instalacyjnego projektu. Zamknąłem atom, uruchomiłem go z innego katalogu i problem zniknął.
.
W moim przypadku to samo działo się na Sublime w Ubuntu. Kiedy zamknąłem IDE, mogłem go poprawnie uruchomić. Jakieś wskazówki na ten temat?
Shad
Nie próbowałem go odtworzyć, aby sprawdzić, czy został naprawiony.
Codeinaire
Dzięki. Mój może działać po zamknięciu Gitkraken. To jest dziwny problem. Czy to oznacza, że ​​nie możemy mieć dwóch procesów monitorujących ten sam folder?
Zhang LongQI
To był tutaj klient Nextcloud - który używa ton zegarków inotify. Dzięki, wszyscy!
Bill McGonigle
9
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

To zadziałało dla mnie

iClass Chima
źródło
1
Dodaj wyjaśnienie, jak to odpowiada na pytanie.
Jason Aller
Działało poprawnie
Rohit Parte
8

Spróbuj tego....

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

Wyzywająco zadziała

MD SHAYON
źródło
1
Podoba mi się buntowniczy charakter tego buntu
SimplyKnownAsG,
7

Dodaj nodemon.jsonplik konfiguracyjny do folderu głównego i określ wzorce ignorowania, na przykład:

nodemon.json

{
  "ignore": [
    "*.test.js", 
    "dist/*"
  ]
}
  • Należy pamiętać, że domyślnie .git, node_modules, bower_components, .nyc_output, coveragei .sass-cachesą ignorowane, więc nie ma potrzeby, aby dodać je do swojej konfiguracji.

Objaśnienie: Ten błąd występuje, ponieważ przekroczyłeś maksymalną liczbę obserwatorów dozwoloną przez system (tj. Nie nodemonma więcej miejsca na dysku do oglądania wszystkich plików - co prawdopodobnie oznacza, że ​​oglądasz mało ważne pliki). Więc ignorujesz nieważne pliki, których nie obchodzą cię zmiany, na przykład dane wyjściowe kompilacji lub przypadki testowe.

Ahmed Soliman
źródło
3

w moim przypadku zamknięcie kodu Visual Studio i uruchomienie serwera załatwiło sprawę

System operacyjny - Ubuntu 16,4 lts

wersja node.js - 8.11.1

npm wersja - 6.0.0

Vishal Verma
źródło
Wygląda na to, że nie korzystał ze studia wizualnego.
Julien Revault d'A ...
1
Chociaż to nie odpowiada bezpośrednio na pytanie (ponieważ pytanie nie dotyczy kodu VS), to rozwiązało mój problem.
Chasen Bettinger
2

Zamiast określać listę katalogów do zignorowania (np. Negatywne), możesz także określić listę katalogów do oglądania (np. Pozytywnych):

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

W moim konkretnym przypadku miałem jeden katalog, który chciałem obejrzeć, a około dziewięciu chciałem zignorować, więc określenie „--watch” było znacznie prostsze niż określenie „--ignore”

vt5491
źródło
0

Miałem ten sam błąd, ale w systemie Ubuntu 14.04 w systemie Windows 10 (Bash w systemie Ubuntu w systemie Windows). Jedyne co zrobiłem, aby przezwyciężyć błąd, to zaktualizować aktualizację Creators, która następnie pozwoliła mi zainstalować wersję 16.04 Ubuntu bash, a następnie po zainstalowaniu najnowszej wersji węzła (w ten sposób ) zainstalowałem również najnowszą wersję npm a następnie nodemon zaczął działać poprawnie.

Šimon Hrabec
źródło
0

Jeśli system operacyjny to Linux, po prostu użyj, będzie działać

 sudo npm run server
Siddhartha Mukherjee
źródło