Utworzyłem aplikację expressjs przy użyciu następujących poleceń:
express -e folderName
npm install ejs --save
npm install
Po uruchomieniu aplikacji z: node app.js
występują następujące błędy:
events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE
at errnoException (net.js:884:11)
at Server._listen2 (net.js:1022:14)
at listen (net.js:1044:10)
at Server.listen (net.js:1110:5)
at Object.<anonymous> (folderName/app.js:33:24)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
Jak to naprawić?
Odpowiedzi:
Uruchomiłeś inny serwer korzystający z tego samego portu jak 8080.
Może masz już uruchomioną
node app
inną powłokę. Zamknij ją i uruchom ponownie.Możesz sprawdzić PORT nr. jest dostępny lub nie używa
Alternatywnie możesz użyć lsof :
źródło
rails server
...: |Otrzymujemy podobny błąd, gdy czasami uruchamiamy naszą aplikację ekspresową. W takim przypadku musimy postępować tak samo. Musimy sprawdzić, czy działa w dowolnym terminalu. Jeśli chcesz znaleźć i zabić proces, wykonaj następujące kroki:
LUB
Użyj jednego polecenia, aby zamknąć wszystkie działające procesy węzłów.
źródło
ps aux | grep node | awk '{print $2}' | xargs kill -9
killall -r node
(in linux)Instancja prawdopodobnie nadal działa. To naprawi to.
Aktualizacja: To polecenie działa tylko w systemach Linux / Ubuntu i Mac.
źródło
Jeśli korzystasz z systemu Linux, ten problem może również wystąpić, jeśli Nodejs nie działa jako root.
Zmień z tego:
Do tego:
Właśnie mi się przydarzyło i żadna inna sugestia tutaj tego nie naprawiła. Na szczęście przypomniałem sobie, że skrypt działał innego dnia, gdy działał jako root. Mam nadzieję, że to komuś pomoże!
Oświadczenie: To prawdopodobnie nie jest najlepsze rozwiązanie dla środowiska produkcyjnego. Uruchomienie usługi jako root może spowodować pewne luki w zabezpieczeniach twojego serwera / aplikacji. W moim przypadku było to rozwiązanie dla lokalnej usługi, ale zachęcam innych do poświęcenia trochę czasu na izolowanie przyczyny.
źródło
Jest tak, ponieważ port używany do uruchomienia skryptu jest już używany. Musisz zatrzymać wszystkie inne węzły korzystające z tego postu. w tym celu możesz sprawdzić wszystkie węzły według
LUB tylko dla procesu węzłowego.
ps -ef | grep node
To da ci listę wszystkich procesów węzłowych o idzabić cały proces węzłowy
Lub dla konkretnego identyfikatora
sudo kill -9 id
źródło
Naprawiłem błąd, zmieniając port, który był
i zmieniłem na:
źródło
Węzeł portu, z którego próbuje skorzystać węzeł, może być już używany przez inny program. W moim przypadku był to ntop , który niedawno zainstalowałem. Musiałem otworzyć http: // localhost: 3000 / w przeglądarce, aby to zrealizować. Inny sposób znalezienia procesu znajduje się tutaj .
źródło
Jeśli chcesz użyć tego samego numeru portu, wpisz
kill %
terminal, który zabija bieżący proces w tle i uwalnia port do dalszego użycia.źródło
oznacza to, że plik jest teraz uruchomiony. wystarczy wpisać poniższy kod i spróbować ponownie:
źródło
Zamknij wszystkie działające serwery węzłów, nawet jeśli znajdują się one w innych oknach terminali lub działają na różnych portach. To powinno rozwiązać problem.
źródło
Jeśli próbujesz zabić wszystkie instancje węzłów i inne usługi nasłuchujące na 3000 (domyślnie używane w konfiguracji szkieletu ekspresowego) bezskutecznie, powinieneś sprawdzić, aby upewnić się, że twoje środowisko nie definiuje „portu” jako czegoś nieoczekiwanego. W przeciwnym razie prawdopodobnie wystąpi ten sam błąd. W pliku app.js ekspresowego szkieletu zauważysz wiersz 15:
źródło
Aby to naprawić, zakończ lub zamknij uruchomiony serwer. Jeśli używasz środowiska Eclipse IDE, wykonaj następujące czynności,
Uruchom> Debuguj
Kliknij uruchomiony proces prawym przyciskiem myszy i kliknij Zakończ .
źródło
events.js: 183 throw er; // Nieobsługiwane zdarzenie „błąd”
Mam również ten sam problem i próbowałem na wiele sposobów, ale w końcu to dostałem, to działa dobrze:
Więcej informacji można znaleźć pod tym linkiem https://github.com/ionic-team/ionic-cli/issues/2922
źródło
W rzeczywistości klawisze Ctrl + C nie zwalniają portu używanego przez proces węzła. Więc jest ten błąd. Rozwiązaniem problemu było użycie następującego fragmentu kodu w server.js:
To zadziałało dla mnie.
Możesz także sprawdzić inne rozwiązania wymienione w Graceful shutdown w NodeJS
źródło
Przyczyna tego błędu
Proste i szybkie rozwiązanie
W systemie Linux na przykład jako port podano 3000
lsof -i :3000
. Jeśli jakikolwiek proces jest już uruchomiony na porcie 3000, zobaczysz ten wydruk na konsoliSkopiuj PID (identyfikator procesu) z wyjścia
Uruchom
sudo kill -9 16615
(musisz ustawić PID po -9)źródło
W moim przypadku musiałem także biec
vagrant reload
. Nawet jeśli żaden proces węzła nie uruchomił mojej ekspresowej aplikacji na mojej maszynie wirtualnej, ciągle pojawiał się ten błąd, aż do ponownego załadowania błędnego pudełka.źródło
Zatrzymaj usługę korzystającą z tego portu.
źródło
W moim przypadku problem został spowodowany przez zapomnienie wywołania
next()
metody expressjs `use '.http://expressjs.com/guide/using-middleware.html
źródło
To zadziałało dla mnie.
http://www.codingdefined.com/2015/09/how-to-solve-nodejs-error-listen.html
Wystarczy zmienić numer portu we właściwościach projektu.
źródło
Możesz także zmienić port z Gruntfile.js i uruchomić ponownie.
źródło
Po kilkakrotnym zabiciu tego samego procesu i niemożności zlokalizowania tego, co jeszcze działało na porcie 8000, zdałem sobie sprawę, że próbuję uruchomić na porcie 8000 dwa razy:
Przed:
Po:
źródło
Miałem ten sam problem i dowiedziałem się, że proces nodejs, który wcześniej anulowałem za pomocą CTRL + C, nadal działa. Problem w Windows 10 polega na tym, że Ctrl + C nie zabija z wdziękiem nodejs. Otworzyłem menedżera zadań i ręcznie zabiłem proces. Rozwiązania dostarczone w GitHub nie działały dla mnie.
źródło
Jeśli używasz systemu Windows, możesz zakończyć proces z menedżera zadań dla node.js
źródło
Żadna z odpowiedzi nie działała dla mnie.
Po ponownym uruchomieniu komputera mogłem uruchomić serwer.
Prochowiec
shutdown now -r
Linux
sudo shutdown now -r
źródło
-> sprawdź, co działa na porcie 8080 lub jaki port chcesz sprawdzić
jeśli coś działa, możesz go zamknąć lub użyć komendy kill, aby go zamknąć
źródło
Proste, po prostu sprawdź teminal w Visual Studio Code Ponieważ ja uruchomiłem aplikację węzła i hibernowałem laptopa, a następnego ranka włączam laptopa z powrotem do tworzenia oprogramowania. Następnie uruchom ponownie komendę nodemon app.js. Najpierw uruchomiłem od nocy, a drugą uruchomiłem moje ostatnie polecenie, więc dwa monity poleceń nasłuchują na tych samych portach, dlatego otrzymujesz ten problem. Prosty Zamknij jeden terminal lub cały terminal, a następnie uruchom węzeł app.js lub nodemon app.js
źródło
Port, którego słuchasz, jest już nasłuchiwany przez inny proces.
Gdy napotkałem ten błąd, zabiłem proces za pomocą programu Windows PowerShell (ponieważ korzystałem z systemu Windows)
ps
a następnie możesz uzyskać listę procesówStop-process <Id>
Myślę, że jest to pomoc dla użytkowników systemu Windowsźródło
Natrafiłem dzisiaj na ten sam problem i port nie był używany. Pomogło następujące podejście:
źródło
JEŻELI jest w systemie Mac, chodzi o IP x86_64-apple-darwin13.4.0. Jeśli będziesz śledzić błędy, będzie to coś związanego z x86_64-apple-darwin13.4.0. Dodaj
127.0.0.1 x86_64-apple-darwin 13.4.0
do pliku / etc / hosts . Potem problem zniknął
źródło
Po prostu zmień port, być może twój obecny port jest używany przez iis lub inny serwer.
źródło