Uczę się graphql
i używam prisma-binding
do operacji Graphql. Mam do czynienia z tym nodemon
błędem podczas uruchamiania mojego serwera węzłowego i daje mi ścieżkę do pliku schematu, który jest automatycznie generowany przez plik graphql-cli
. Czy ktoś może mi powiedzieć, o co chodzi w tym błędzie?
Błąd:
Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/media/rehan-sattar/Development/All projects/GrpahQl/graph-ql-course/graphql-prisma/src/generated
node_modules
są niezbędne, ponieważ są tam wszystkie pakiety. Próbowałem zabić poprzednie procesy działające na porcie mojego serwera, zadziałało to dla mnie, ale nie wiem, ile teraz to zajmie: DOdpowiedzi:
Jeśli używasz Linuksa, Twój projekt osiąga limit obserwatorów plików w Twoim systemie
Aby to naprawić, na swoim terminalu spróbuj:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
źródło
sysctl --system
do przeładowania dla nowszych systemówfind /proc/*/fd -user "$USER" -lname anon_inode:inotify -printf '%hinfo/%f\n' 2>/dev/null | xargs cat | grep -c '^inotify'
Czasami pojawia się ten problem podczas pracy z VSCode na moim komputerze z systemem Ubuntu.
W moim przypadku pomocne jest następujące obejście:
zatrzymaj obserwatora, zamknij VScode, uruchom obserwatora, ponownie otwórz VSCode.
źródło
Musisz zwiększyć limit obserwatorów inotify dla użytkowników twojego systemu. Możesz to zrobić z wiersza poleceń za pomocą:
sudo sysctl -w fs.inotify.max_user_watches=100000
Będzie to jednak trwać tylko do momentu ponownego uruchomienia. Aby to było trwałe, dodaj plik o nazwie
/etc/sysctl.d/10-user-watches.conf
z następującą zawartością:fs.inotify.max_user_watches = 100000
Po dokonaniu powyższych (lub jakikolwiek inny) zmiany można przeładować ustawienia ze wszystkich plików konfiguracyjnych sysctl w
/etc
zsudo sysctl -p
.źródło
/etc/sysctl.d/10-user-watches.conf
i umieść w nimfs.inotify.max_user_watches = 100000
.echo fs.inotify.max_user_watches=100000 | sudo tee /etc/sysctl.d/10-user-watches.conf && sudo sysctl -p
.sysctl --system
do przeładowania dla nowszych systemówW celu przetestowania zmian ustawiłem tymczasowo parametr na wartość 524288.
sysctl -w fs.inotify.max_user_watches=524288
następnie przystępuję do walidacji:
I problem został rozwiązany, aby uczynić go trwałym, należy spróbować dodać linię w pliku „/etc/sysctl.conf”, a następnie ponownie uruchomić usługę sysctl:
cat /etc/sysctl.conf |tail -n 2 fs.inotify.max_user_watches=524288 sudo systemctl restart systemd-sysctl.service
źródło
Trudno jest wiedzieć, o ile zwiększyć liczbę obserwatorów. Oto narzędzie do podwojenia liczby obserwatorów:
function get_inode_watcher_count() { find /proc/*/fd -user "$USER" -lname anon_inode:inotify -printf '%hinfo/%f\n' 2>/dev/null | xargs cat | grep -c '^inotify' } function set_inode_watchers() { sudo sysctl -w fs.inotify.max_user_watches="$1" } function double_inode_watchers() { watcher_count="$(get_inode_watcher_count)" set_inode_watchers "$((watcher_count * 2))" if test "$1" = "-p" || test "$1" = "--persist"; then echo "fs.inotify.max_user_watches = $((watcher_count * 2))" > /etc/sysctl.d/10-user-watches.conf fi } # Usage double_inode_watchers # to make the change persistent double_inode_watchers --persist
źródło
Miałem ten sam problem, jednak mój pochodził z webpacka. Na szczęście udostępnili na swojej stronie świetne rozwiązanie :
webpack.config.js
module.exports = { watchOptions: { ignored: /node_modules/ } };
źródło
W systemie Linux faktycznie korzystałem z sudo.
sudo npm start
źródło