saya menguji server yang ditulis dalam nodejs di windows 7 dan ketika saya mencoba menjalankan penguji di baris perintah saya mendapatkan kesalahan berikut
Error: listen EADDRINUSE
at errnoException (net.js:614:11)
at Array.0 (net.js:704:26)
at EventEmitter._tickCallback (node.js:192:40)
bagaimana cara memperbaikinya tanpa me-reboot?
sudo killall node
mungkin bergunaJawaban:
Ini berarti alamat yang Anda coba ikat ke server sedang digunakan. Coba port lain atau tutup program menggunakan port itu.
sumber
node app.js
dan menghentikannya dengan Ctrl + C, tetapi mulai mengalami masalah EADDRINUSE setelah pertama kali saya menggunakannyanpm start
, jadi tampaknya solusi sebenarnya adalah menggunakan sesuatu selain Ctrl + C untuk mematikan setelah menggunakannpm start
.npm start
Skrip Anda mungkin lebih dari satu program node, atau program node yang dijalankan di latar belakang, atau program mungkin memiliki proses anak yang menggunakan port tersebut.ps aux | grep node
, temukan id proses (kolom kedua) dan cukup bunuh dengankill <pid>
(milik saya dulukill 18762
).Lari:
Anda akan mendapatkan sesuatu seperti:
Kemudian lakukan:
sumber
kill -15 60778
akan jauh lebih baik karena akan memungkinkan proses untuk keluar dengan anggun (SIGTERM
) daripada jika mengirimSIGKILL
Di Linux (setidaknya turunan Ubuntu)
lebih mudah dari formulir ini.
Keduanya tidak akan berfungsi jika Anda memiliki anak yatim piatu yang memegang port. Sebaliknya, lakukan ini:
Jika port ditahan, Anda akan melihat sesuatu seperti ini:
Sekarang bunuh dengan pid:
sumber
<pid>/<parent>
saya dapatkan-
Perintah berikut akan memberi Anda daftar proses node yang sedang berjalan.
Untuk membebaskan port tersebut, hentikan proses menggunakan yang berikut ini.
sumber
| grep -v grep
untuk mengecualikangrep
proses.pidof node
pidof
mudah dipasang untuk saya di osx dengan homebrewbrew install pidof
Anda mendapatkan kesalahan
EADDRINUSE
karena porta, yang ingin digunakan aplikasi Anda, ditempati oleh proses lain. Untuk melepaskan port ini, Anda perlu menghentikan proses pendudukan.Karena Anda menggunakan Windows , Anda dapat menghentikan proses menggunakan command prompt (
cmd
). Dengancmd
Anda dapat menemukan ID proses (PID) dari aplikasi pemblokiran. Anda akan membutuhkan PID untuk menghentikan / menghentikan proses.Berikut adalah panduan langkah demi langkah ...
Temukan semua proses yang berjalan pada port tertentu (dalam contoh ini, Port adalah "3000"):
The
netstat
perintah akan daftar semua proses yang berjalan pada port tertentu. Di kolom terakhirnetstat
hasil Anda dapat melihatPID
s (dalam contoh ini, PID adalah "8308"). Anda dapat mengetahui lebih lanjut tentang spesifikPID
dengan menjalankan perintah berikut:Jika Anda ingin menghentikan suatu proses, Anda dapat melakukannya dengan perintah berikut dengan menggunakan nya
PID
(dalam contoh ini, PID adalah "8308"):Screenshot
sumber
Ketika Anda mendapatkan kesalahan Kesalahan: dengarkan EADDRINUSE,
Coba jalankan perintah shell berikut:
Saya
grep
ed untuk 8080, karena saya tahu server saya berjalan pada port 8080. (static
memberitahu saya ketika saya memulainya: 'melayani "." Di http://127.0.0.1:8080 '.) Anda mungkin harus mencari yang lain Pelabuhan.sumber
misalkan server Anda berjalan
port 3000
setelah itu digunakan
kill -9 <pid>
dalam kasus di atas
sudo kill -9 11716
sumber
gunakan perintah di bawah ini untuk menghentikan proses yang berjalan pada port tertentu - 3000 dalam contoh di bawah ini
sumber
Salah satu solusi yang mungkin berhasil bagi saya adalah menutup jendela di browser tempat saya menjalankan skrip " http: // localhost: 3000 / " yang sesuai.
sumber
Periksa ID Proses
sudo lsof -i: 8081
Daripada membunuh Proses tertentu
sudo kill -9 2925
sumber
Saat Anda mendapatkan kesalahan
Buka command prompt dan ketik instruksi berikut ini:
setelah itu restart antarmuka celah telepon.
Jika Anda ingin mengetahui phonegap ID proses mana yang digunakan, buka TASK MANAGER dan lihat kolom heading PID dan temukan nomor PID.
sumber
killall -9
Node yang disebutkan di atas , yang disarankan oleh Patrick berfungsi seperti yang diharapkan dan memecahkan masalah, tetapi Anda mungkin ingin membaca bagian edit dari jawaban ini tentang mengapakill -9
mungkin bukan cara terbaik untuk melakukannya.Selain itu, Anda mungkin ingin menargetkan satu proses daripada membunuh semua proses aktif secara membabi buta.
Dalam hal ini, pertama-tama dapatkan ID proses (PID) dari proses yang berjalan pada port tersebut (misalnya 8888):
Ini akan mengembalikan sesuatu seperti:
(DENGARKAN) Kemudian lakukan saja (ps - sebenarnya tidak. Harap terus membaca di bawah):
sumber
Ini berfungsi di Mac:
Langkah 1.
Perintah di atas akan memberi Anda Id Proses yang saat ini memegang port.
Langkah 2.
sumber
Anda dapat mengubah port Anda di app.js atau di file konfigurasi proyek Anda.
default ('port', 80)
dan untuk melihat apakah port 80 sudah digunakan, Anda dapat melakukannya
netstat -antp | grep 80
netstat -antp | simpul grep
Anda mungkin ingin melihat apakah proses node sudah berjalan atau belum.
ps -ef | simpul grep
dan jika Anda menemukan itu sudah berjalan, Anda dapat membunuhnya menggunakan
killall node
sumber
Saya membuat 2 server, mendengarkan pada port yang sama 8081, menjalankan dari kode yang sama, sambil belajar
Perangkat pembuatan server pertama telah berfungsi. Pembuatan server kedua gagal dengan EADDRINUSE
penundaan panggilan balik node.js mungkin menjadi alasan di balik tidak berfungsi, atau pembuatan server ke-2 memiliki pengecualian, dan program keluar, sehingga server pertama juga ditutup
2 petunjuk masalah server, saya dapatkan dari: Bagaimana cara memperbaiki Kesalahan: mendengarkan EADDRINUSE saat menggunakan nodejs?
sumber
Kesalahan: dengarkan EADDRINUSE untuk menyelesaikannya di Ubuntu jalankan di terminal
netstat -nptl
dan setelahkill -9 {process-number}
ini perintah ini untuk mematikan proses node dan sekarang Anda dapat mencoba menjalankan lagi perintah node server.jsEx
dengarkan EADDRINUSE ::: 8080
netstat -nptl
tcp6 0 0 ::: 9000 ::: * DENGARKAN 9660 / java
tcp6 0 0 ::: 5800 ::: * DENGARKAN -
tcp6 0 0 ::: 5900 ::: * DENGARKAN -
tcp6 0 0 ::: 8080 :: : * DENGARKAN 10401 / node
tcp6 0 0 ::: 20080 ::: * DENGARKAN 9660 / java
tcp6 0 0 ::: 80 ::: * DENGARKAN -
tcp6 0 0 ::: 22 ::: * DENGARKAN -
tcp6 0 0 ::: 10137 ::: * DENGARKAN 9660 / java
bunuh -9 10401
sumber
netstat
menerima parameter yang berbeda.netstat -a -p tcp -b -v
akan menampilkan nama proses.Saya telah menginstal node red di Mac dan Raspberry Pi saya. Memiliki masalah yang persis sama dan melakukan 'killall' tidak membantu. Setelah saya mematikan Raspberry Pi dan memulai ulang komputer saya, itu berfungsi dengan baik.
sumber
Mungkin saja Anda telah mencoba menjalankan perintah npm start di dua tab berbeda. Anda tidak dapat menjalankan npm start ketika sudah berjalan di beberapa tab. Centang sekali.
sumber
Bagi siapa pun yang telah mencoba semua cara di atas, tetapi masih tidak dapat menemukan proses pemerah pipi, coba semuanya lagi tetapi pastikan Anda menyertakan "sudo" di depan perintah.
sumber
Jika Anda lebih menyukai UI, temukan proses Node.js di task manager windows dan matikan.
sumber
ps -ef | grep node temukan app.js, matikan pid dari app.js
sumber
cukup bunuh node sebagai pkill -9 node di terminal ubantu dari pada node start
sumber
Anda harus mematikan port dengan mencoba menggunakan perintah berikut di terminal
sumber
[TERPECAHKAN]
Ini mungkin sudah terlambat tetapi itu bekerja seperti pesona.
Anda perlu
pm2
diinstalUntuk menghentikan server yang sedang berjalan (server.js):
sumber
Saya telah memecahkan masalah ini dengan menambahkan di bawah ini di package.json saya untuk membunuh PORT aktif - 4000 (dalam kasus saya) Berjalan di WSL2 / Linux / Mac
Sumber
sumber
Untuk mematikan server node pertama-tama jalankan perintah ini di terminal Anda:
top
id
dari jendela sebelumnya:PID number -9 kill
jadi sekarang Anda mematikan server node Anda, coba lagi untuk menjalankan aplikasi Anda.sumber
Saya menggunakan perintah
netstat -ano | grep "portnumber"
untuk mencantumkan nomor port / PID untuk proses itu. Kemudian, Anda bisa menggunakantaskkill -f //pid 111111
untuk menghentikan proses, nilai terakhir adalah pid yang Anda temukan dari perintah pertama.Satu masalah yang sering saya hadapi adalah node respawning bahkan setelah menghentikan proses, jadi saya harus menggunakan task manager lama yang baik untuk secara manual mematikan proses node.
sumber
Di jendela, silakan jalankan perintah ini:
sumber