Saya telah bekerja dengan proyek node.js selama beberapa minggu dan telah bekerja dengan baik. Biasanya, saya gunakan npm start
untuk menjalankan aplikasi saya dan melihatnya di browser di localhost, port 3000.
Hari ini, saya mulai mendapatkan kesalahan berikut saat menggunakan npm start:
Server started on port 3000
Port 3000 is already in use
Saya telah memeriksa monitor sumber daya dan saya tidak memiliki proses lain yang berjalan pada port 3000. Mengapa saya mendapatkan pesan kesalahan ini?
Di app.js saya, saya memiliki kode berikut untuk mengatur port ... apakah ini salah? Ini bekerja dengan baik sebelumnya jadi saya tidak yakin apa yang saya lakukan salah.
// Set Port
app.set('port', (process.env.PORT || 3000));
app.listen(app.get('port'), function() {
console.log('Server started on port '+app.get('port'));
});
Terima kasih untuk bantuannya!
EDIT:
Saya telah mencoba menjalankan netstat dan TCPView untuk memeriksa proses apa yang menggunakan port, tetapi tidak ada yang menggunakan port itu. Saya juga mencoba memulai ulang laptop saya tetapi saya masih mendapatkan kesalahan yang sama.
sumber
netstat
di command prompt, atau menghubungkan ke localhost: 3000 dengan setara dengan telnet - PuTTY, misalnya.app.listen()
pernyataan di aplikasi Anda yang lain.listen()
yang juga mencoba untuk memulai server di port itu. Yang pertama berfungsi, yang kedua melaporkan kesalahan. Telusuri kode Anda untuk.listen
.Jawaban:
Anda dapat mencari cara untuk menghentikan proses itu.
Untuk Linux / Mac OS cari
(sudo) run
ini di terminal:Di Windows:
mengubah
tskill
untuktaskkill
di bash gitsumber
lsof
dengansudo lsof
saya mendapatkan sesuatu, dan membunuh proses itu memecahkan masalah ini.Kadang-kadang itu terjadi, seperti yang diusulkan @sova. Kadang-kadang ini terjadi pada saya, EADDR sedang digunakan. Biasanya ada jendela terminal yang bersembunyi di latar belakang yang masih menjalankan aplikasi. Dan itu juga benar bagi saya.
Itu terjadi, ketika Anda telah membuka terminal untuk waktu yang lama, ya Anda benar, Anda telah menghentikan prosesnya. Tapi terkadang itu tidak berhenti di latar belakang. Jadi solusi terbaik adalah Anda menutup terminal dan memulainya lagi. Ini akan menyelesaikan masalah Anda. karena dalam kasus saya itu berhasil.
Juga,
tutup instance untuk saat ini tetapi tidak dapat menghentikan proses di latar belakang. Jadi untuk satu kali,
berfungsi, tetapi sekali lagi ketika kami memperbarui kode kami dan menyimpan, masalah ini terjadi lagi seperti pada Nodemon .
Jadi keluar dari terminal akan menyelesaikan masalah. ATAU
sumber
killall -9 node
saya bisa menjalankan server secara lokal.Mungkin Anda bisa menjadikan ini sebagai referensi. Baris perintah tunggal ini dapat menghentikan proses yang berjalan pada port tertentu.
Untuk mematikan banyak port.
sumber
Untuk windows, The Task Manager pasti akan menunjukkan proses node yang sedang berjalan. Cobalah untuk menghentikan prosesnya, itu akan menyelesaikan masalah.
sumber
Saya memiliki masalah yang sama. (Langkah-langkah di bawah ini berfungsi dengan baik di Windows 10):
Sekarang kamu bisa lari
npm start
.Semoga membantu Anda.
sumber
Saya telah melihat hal yang sama dan mencoba semua saran di atas tanpa hasil. Berikut adalah langkah-langkah yang menyelesaikannya untuk saya: - matikan wifi - mulai npm (ini seharusnya berfungsi) - nyalakan wifi
Saya tidak begitu yakin apa akar masalahnya tetapi itu menyelesaikannya untuk saya.
sumber
netstat -ano
tidak mencantumkan apa pun yang menggunakan port 3000.Membunuh proses yang memiliki port 3000
Pertama, mari kita lihat bagaimana kita dapat menghentikan proses yang porta terbuka.
Dengan menggunakan perintah lsof, kita dapat mengambil PID yang memiliki porta yang diberikan:
Kemudian kita dapat menghentikan proses ini hanya dengan melakukan:
Mari kita ubah ini menjadi satu baris:
Jika Anda menggunakan variabel lingkungan untuk menyetel port server, kami dapat menetapkannya sebagai ganti hardcode nilai kami:
Terakhir, kita bisa default ke port 3000 jika variabel lingkungan tidak disetel:
Mendapatkan nodemon untuk mengeksekusi hook
Nodemon memungkinkan Anda mengatur event hook melalui file konfigurasi nodemon.json:
Ini akan menyebabkan nodemon menjalankan
${PORT:-3000} -t | xargs
perintah sh -c 'lsof -i: kill setiap kali aplikasi Anda mogok, sehingga mematikan proses turunan yang dimunculkannya yang membuat port tetap terbuka.atau Anda bisa mencoba yang ini
misalnya:
sumber
lsof -i :3000 -t
= \fuser -k port-number/tcp
Saya menggunakan server ekspres dengan nodemon di NodeJS. Saya mendapat pesan berikut dan tampaknya ada kesalahan:
Ada solusi umum yang jika Anda menghentikan semua koneksi server node, Anda dapat menambahkan kode ini di file package.json Anda:
Selain itu, saya telah menemukan beberapa solusi perintah windows dan bash pada Win 10 x64.
Semua catatan saya ada di sini:
# Hentikan semua Koneksi Server NodeJS
# Contoh: Buka Windows Task Manager dan lihat nomor PID "node.exe" di Windows
# Bunuh proses di Windows dengan Nomor Port (Contoh)
Untuk bantuan:
Kode 1:
Kode 2:
Kode 3:
# Baris perintah untuk melihat port tertentu
dalam cmd:
dalam pesta:
# Temukan node.exe menggunakan perintah "tasklist"
dalam cmd:
dalam pesta:
sumber
Ini kadang-kadang terjadi pada saya, EADDR sedang digunakan. Biasanya ada jendela terminal yang bersembunyi di latar belakang yang masih menjalankan aplikasi. Anda dapat menghentikan proses dengan ctrl + C di jendela terminal.
Atau, mungkin Anda mendengarkan port beberapa kali karena copy / pasta =)
sumber
.listen()
beberapa kali?Buka Pengelola Tugas (tekan Ctrl + Alt + Del Pilih 'Tab Proses' Cari 'Node.js: JavaScript sisi server' Pilih dan klik tombol 'Akhiri tugas'
sumber
Datang dari Google ke sini dengan solusi untuk High Sierra.
Sesuatu berubah dalam pengaturan jaringan macOS dan beberapa aplikasi (termasuk ping) tidak dapat menyelesaikan localhost.
Mengedit / etc / hosts sepertinya ada perbaikan:
cmd:
sudo nano /etc/hosts/
konten127.0.0.1 localhost
Atau sederhananya (jika Anda yakin / etc / hosts kosong)
sudo echo '127.0.0.1 localhost' > /etc/hosts
sumber
Saya telah menghabiskan 2 jam untuk mencari tahu mengapa
EADDRINUSE
tidak mengizinkan saya untuk sart aplikasi (server node-express lainnya baik-baik saja) ... itu mulai berfungsi setelah menambahkanlazyConnect: true,
ke konfigurasi sumber data.Jangan tanya saya mengapa itu membantu. Saya tidak tahu. Saya meletakkan info ini di sini hanya untuk orang yang memiliki masalah yang sama.
sumber
Saya mendapat masalah ini menggunakan Git Bash di Windows. Saya lari
npm start
, ataunode app.js
. Setelah menghentikannya dengan Ctrl + C segera dan mencoba untuk memulai server lagi menggunakannpm start
ataunode app.js
kemudian saya mendapatkan pesan kesalahan ini.Namun, ketika saya melakukan ini dengan Command Prompt Windows biasa , itu berfungsi dengan baik.
Atau Anda bisa melakukannya dengan cara lain. Buka Task Manager dan Temukan baris " Node.js: Server-side JavaScript ". Pilih itu dan akhiri tugas . Ini harus bekerja sekarang.
Terima kasih.
sumber
Jika Anda ingin menutup hanya satu port, jalankan saja perintah ini.
kill -9 $(lsof -t -i:3000)
Perbedaan antara
pkill
dankill
adalah seseorang yang mengolah tanah liat. Di kill Anda menerapkan filter. Anda hanya menghentikan port yang Anda inginkan.The
pkill
perintah menutup semua proses simpul.pkill -9 node
Gunakan pkill untuk menghindari kebocoran memori yang terjadi sesekali selama pengembangan. jika ada lebih dari satu node, itu membunuh semuanya.
Penggunaan skrip di package.json juga dicontohkan.
sumber
Coba buka localhost di browser Anda. Cukup ketik:
localhost:3000
di bilah alamat.Jika aplikasi terbuka, itu berarti aplikasi Anda sebelumnya
npm run
masih aktif. Sekarang, Anda dapat membuat perubahan pada kode dan melihat efeknya jika Anda mendesain aplikasi yang sama, atau jika Anda ingin menjalankan aplikasi lain, cukup ubah kode (di index.js dari aplikasi yang sebelumnya berjalan) sedikit dan ( mungkin menyegarkan tab browser) untuk membuatnya macet;) ..... Sekarang jalankannpm run start
lagi dari direktori aplikasi baru Anda. Semoga ini membantu! :)atau
Anda dapat membuka Task Manager (WINDOWS_KEY + X> Task Manager) dan Anda akan melihat baris "Node.js: Server-side JavaScript". Pilih itu dan akhiri tugas .... Seharusnya berfungsi sekarang !!
Jika tidak, ubah
.env
file aplikasi Anda untuk menyertakanport:3002
dan menjalankan aplikasi baru. Ini akan memungkinkan Anda menjalankan dua aplikasi terpisah di port yang berbeda. Bersulang!!sumber
Semoga bisa membantu
sumber
Sederhana di linux
sumber
Saya juga mengalami masalah yang sama. Cara terbaik untuk mengatasinya adalah (untuk windows) :
Buka Manajer Tugas .
Gulir dan temukan proses tugas bernama. Node.js: JavaScript sisi server
Akhiri tugas khusus ini.
Ini dia! Sekarang lakukan npm start dan itu akan berfungsi seperti sebelumnya!
sumber
Untuk pengguna windows, Anda dapat menggunakan alat CurrPorts untuk mematikan port yang sedang digunakan dengan mudah
sumber
Ini mungkin proses admin yang berjalan di latar belakang dan
netstat
tidak menunjukkan ini.Gunakan
tasklist | grep node
untuk menemukan PID dari proses admin ini dan kemudiankill PID
sumber
jika Anda menggunakan webstorm pastikan port default Anda bukan 3000 dari file -> pengaturan -> Build, Execution, Deployment -> Debugger Dan ada perubahan
dan setel ke "63342" atau lihat jawaban ini Ubah WebStorm LiveEdit Port (63342)
sumber
Dalam skrip package.json termasuk:
Saya yakin masalahnya bagi saya saat port lama tidak dimatikan pada waktunya oleh nodemon untuk restart. Saya mengalami masalah saat menggunakan multer.
sumber
server atau aplikasi listener () mungkin ditambahkan di 2 tempat. Cari metode listening () di untuk aplikasi startups itu sebabnya kembali sebagai Server dimulai di Port XXXX dan Port XXXX sudah digunakan pesan datang berdampingan
sumber
Dalam keadaan saya, saya baru saja mulai menggunakan VS Code dan telah mengikuti tutorial menggunakan Sequelize. Pada akhirnya saya memiliki file bin / www yang memiliki listener () di sana. Saya tidak tahu tentang ini dan saya menjalankan aplikasi saya dengan menjalankan node app.js, ketika tidak berhasil saya kemudian menambahkan hal-hal server ekspres dengan .listen () (yang berfungsi dengan baik).
Tetapi ketika mulai menggunakan nodemon dan VSCode, itu diarahkan ke bin / www dan itu membutuhkan app.js.
Singkat cerita, saya telah menambahkan .listen () ke app.js saya dan menjalankan app.js secara langsung ketika saya seharusnya tidak menambahkannya dan menjalankan bin / www.
sumber
Di ubuntu pertama ambil proses dengan menggunakan nomor port: sudo lsof -i: 3000 lalu gunakan perintah kill untuk mematikan proses, misalnya jika proses PID adalah 4493 gunakan perintah: kill 4493 , untuk mac atau windows cari perintah terkait
sumber
Saya telah memecahkan masalah ini karena MongoDB atau ada aplikasi lain yang pernah Anda jalankan sebelumnya di port ini, jadi untuk mengatasinya, matikan proses dari task manager, atau cukup ubah nomor port dari 3000 ke yang lain.
sumber
Sangat sederhana. Anda dapat memperbaikinya dengan 2 langkah mudah.
Ternyata beberapa program lain menggunakan variabel tersebut. Biasanya ketika Anda memulai react-scripts, itu akan mencari variabel lingkungan dengan judul PORT itu.
sumber
Sebelum menjalankan nodemon, silahkan mulai mongod terlebih dahulu. Anda tidak akan pernah mendapatkan kesalahan ini. :)
sumber
periksa proses apa pun yang berjalan di port yang sama dengan memasukkan perintah:
Anda dapat menemukan proses yang berjalan pada port node masing-masing, lalu mematikan node dengan
Jika masalah masih tetap ada maka matikan saja semua node
sumber
Membunuh semua port yang berjalan (mac):
sumber