W tym przewodniku wyjaśniono możliwe poprawki dotyczące „słuchaj EADDRINUSE: adres już używany”, omawiając poniższe sekcje:
- Jak rozwiązać problem „Błąd: słuchaj EADDRINUSE: adres jest już używany”?
- Rozwiązanie 1: Uruchom procesy na różnych portach
- Rozwiązanie 2: Zatrzymanie procesów działających na tym samym porcie
- Metoda 1: Po instalacji użyj modułu „kill-port”.
- Metoda 2: Użyj modułu „kill-port” bez instalacji
- Dodatkowa wskazówka: Dezinstalacja modułu „kill-port”.
- Rozwiązanie 3: Zakończ usługi Node.js w systemie Windows
- Korzystanie z podejścia CLI
- Korzystanie z podejścia GUI
- Wniosek
Jak rozwiązać problem „Błąd: słuchaj EADDRINUSE: adres jest już używany”?
„ Błąd: słuchaj EADDRINUSE: adres jest już używany ” pojawia się, gdy więcej niż jedna aplikacja lub zadanie próbuje uzyskać dostęp do tego samego portu. Ten błąd może zostać zgłoszony w fazie testowania lub programowania. Na przykład w celu lepszego zrozumienia zostanie wygenerowany powyższy błąd:
konst ekspresowyObj = wymagać ( 'wyrazić' )
konst aplikacja demonstracyjna = ekspresowyObj ( )
aplikacja demonstracyjna. Dostawać ( „/” , ( wymaganie, rez ) => {
rez. json ( {
nazwa : „Artykuł Linuxhint na temat CORS” ,
język : „Node.js” ,
aplikacja : „corsAplikacja” ,
pochodzenie : „Pochodzenie krzyżowe” ,
oprogramowanie pośrednie : „CORS”
} )
} )
aplikacja demonstracyjna. Słuchać ( 8080 , ( ) => {
konsola. dziennik ( `Serwer został uruchomiony „http://localhost:8080/” ` )
} )
aplikacja demonstracyjna. Słuchać ( 8080 , ( ) => {
konsola. dziennik ( `Serwer został uruchomiony „http://localhost:8080/” ` )
} )
Powyższy fragment kodu działa w następujący sposób:
- Najpierw zaimportuj „ wyrazić ” i zapisz jego obiekt w nowej zmiennej „ ekspresowyObj ”. Użyj tej zmiennej jako konstruktora, aby utworzyć nową aplikację ekspresową o nazwie „ aplikacja demonstracyjna ”.
- Następnie utwórz żądanie GET za pomocą „ Dostawać() ” i ustaw stronę główną jako procedurę obsługi root, przekazując „ / ” jako pierwszy parametr. Drugi parametr to anonimowa funkcja wywołania zwrotnego, która wysyła „ JSON „dane jako odpowiedź poprzez wykorzystanie „ json() ' metoda.
- Następnie spraw, aby aplikacja działała na tym samym numerze portu „ 8080 ' dwa razy. Dwukrotne wykonanie tego samego portu generuje wspomniany błąd.
Wygenerowane dane wyjściowe po kompilacji powyższego kodu pokazują wystąpienie błędu „Błąd: słuchaj EADDRINUSE: adres jest już używany”:
Istnieją głównie dwa rozwiązania umożliwiające rozwiązanie błędu, który wystąpił w powyższych wynikach, a mianowicie zmiana numerów portów lub zatrzymanie jednego z uruchomionych procesów. Istnieje jednak także wiele innych poprawek, które pośrednio rozwiązują problem „ Błąd: słuchaj EADDRINUSE: adres jest już używany ' błąd. Poniżej przedstawiono rozwiązania wraz z praktycznymi demonstracjami:
Rozwiązanie 1: Uruchom procesy na różnych portach
Najbardziej zalecanym rozwiązaniem wspomnianego błędu jest identyfikacja numerów portów, na których działają obie usługi, tak jak w naszym przypadku jest to „ 8080 ”. Następnie wybierz losowo jedną usługę i zmodyfikuj jej numer portu, aby usługi nasłuchiwały na hoście lokalnym, ale z różnymi numerami portów. Nasz kod po omawianej modyfikacji pokazano poniżej:
konst ekspresowyObj = wymagać ( 'wyrazić' )
konst aplikacja demonstracyjna = ekspresowyObj ( )
aplikacja demonstracyjna. Dostawać ( „/” , ( wymaganie, rez ) => {
rez. json ( {
nazwa : „Artykuł Linuxhint na temat CORS” ,
język : „Node.js” ,
aplikacja : „corsAplikacja” ,
pochodzenie : „Pochodzenie krzyżowe” ,
oprogramowanie pośrednie : „CORS”
} )
} )
aplikacja demonstracyjna. Słuchać ( 8080 , ( ) => {
konsola. dziennik ( `Serwer został uruchomiony „http://localhost:8080/” ` )
} )
aplikacja demonstracyjna. Słuchać ( 3000 , ( ) => {
konsola. dziennik ( `Serwer został uruchomiony „http://localhost:8080/” ` )
} )
Dane wyjściowe wygenerowane po wykonaniu powyższego kodu pokazują, że teraz „ Błąd: słuchaj EADDRINUSE: adres jest już używany ” problem został rozwiązany:
Rozwiązanie 2: Zatrzymanie procesów działających na tym samym porcie
Innym sposobem rozwiązania błędu „słuchaj EADDRINUSE: adres już używany” jest zatrzymanie procesów działających na określonym porcie, który jest już używany. Spowoduje to, że port będzie bezczynny, do którego programista będzie mógł uzyskać dostęp w celu wykonania określonych zadań. Proces zatrzymywania odbywa się za pomocą zewnętrznego modułu o nazwie „ port zabicia ”.
Na przykład wszystkie procesy działające na określonym numerze portu „ 8080 ” zostaną zabici przy użyciu „ port zabicia moduł. Istnieją dwa sposoby użycia modułu „kill-port” i oba podejścia opisano poniżej:
Metoda 1: Po instalacji użyj modułu „kill-port”.
„ port zabicia ” jest modułem zewnętrznym innej firmy i aby móc korzystać z tego modułu wewnątrz projektu node.js. Moduł ten należy najpierw pobrać, wykonując poniższe polecenie:
npm zainstaluj zabij - Port - GPoniższy rysunek przedstawia zakończenie instalacji „ port zabicia ' zmienny:
Po instalacji użytkownik może wyłączyć usługi dla wymaganego numeru portu. W naszym przypadku usługi numeru portu „ 8080 ” zostaną zabici za pomocą poniższego polecenia:
zabić - Port -- Port 8080Poniższe dane wyjściowe potwierdzają, że wszystkie usługi dla portu „ 8080 ' zostało zabitych:
Metoda 2: Użyj modułu „kill-port” bez instalacji
„ port zabicia ” można używać bez przechodzenia przez proces instalacji, wykorzystując „ np „przewoźnik pakietów”. Na przykład „ port zabicia ” jest używany do zabicia określonych dwóch portów za pomocą polecenia pakietu „npx” podanego poniżej:
npx zabić - Port 8080 9000Poniższe dane wyjściowe pokazują, że usługi dla określonych portów „ 9000 ' I ' 8080 ' zostało zabitych:
Dodatkowa wskazówka: Dezinstalacja modułu „kill-port”.
Aby odinstalować „ port zabicia ” globalnie z systemu wykonaj poniższe polecenie:
npm odinstaluj zabij - Port - G
Rozwiązanie 3: Zakończ usługi Node.js w systemie Windows
Jeśli komunikat „Błąd: słuchaj EADDRINUSE: adres już używany” nadal występuje, zabij wszystkie uruchomione „ węzeł.js ” usługi przy użyciu podejścia GUI lub CLI.
Korzystanie z podejścia CLI
Wciśnij ' Okno ”, aby otworzyć pasek wyszukiwania i wpisać „ CMD ” w polu wyszukiwania, z wygenerowanych wyników. Następnie wybierz opcję „ Wiersz polecenia ” i naciśnij przycisk „ Uruchom jako administrator ' przycisk:
Po wybraniu tej opcji pojawi się nowe okno Wiersza Sterowania. Aby zakończyć aktualnie działające usługi „node.js” w tle, wykonaj poniższe polecenie:
Zabójstwo zadaniowe / F / Węzeł komunikatora. exWygenerowane dane wyjściowe pokazują, że usługi „node.js” zostały zakończone:
Korzystanie z podejścia GUI
Aby wyłączyć działające usługi node.js z systemu, otwórz „ Menadżer zadań ”, naciskając przycisk „ Ctrl + Shift + Esc natychmiast klucze. Po otwarciu „Menedżera zadań” przejdź do „ Detale ”, wybierz opcję „ węzeł.exe ” i naciśnij przycisk „ Zakończ zadanie ” znajdujący się w prawym dolnym rogu, jak pokazano poniżej:
Chodzi o rozwiązanie „Błądu: słuchaj EADDRINUSE: adres jest już używany” w Node.js.
Wniosek
„Błąd: nasłuchiwanie EADDRINUSE: adres już używany” pojawia się, gdy więcej niż jedna usługa próbuje jednocześnie korzystać z jednego portu. Aby rozwiązać ten problem, użytkownik powinien spróbować użyć innego numeru portu lub zakończyć usługi, które już działają na określonym numerze portu, używając przycisku „ port zabicia moduł. Jeśli błąd nadal nie został rozwiązany, zabij wszystkie uruchomione „ węzeł.js ” z menedżera zadań i uruchom ponownie aplikację. W tym przewodniku przedstawiono możliwe rozwiązania problemu „Błąd: słuchaj EADDRINUSE: adres jest już używany”.