`Error: listen EADDRINUSE: address already in use :::3000`
Hemen endişelenmeyin! Bu yazıda, bu hatanın ne olduğunu, neden ortaya çıktığını ve nasıl çözebileceğinizi adım adım anlatacağız. Hadi başlayalım.
EADDRINUSE Nedir?
Örneğin, uygulamanız 3000 numaralı portu kullanmaya çalışıyor fakat bu port başka bir program (belki de önceki bir Node.js uygulamanız) tarafından işgal edilmiştir. Sonuçta, "address already in use" hatası ile karşılaşırsınız.
Neden "EADDRINUSE" Hatası Alırım?
1. Bir Uygulama Portu Zaten Kullanıyor
Bir önceki uygulamanızın düzgün kapanmaması ya da aynı portu kullanan başka bir servis çalışıyor olabilir. Bu en yaygın sebeplerden biridir.
2. Port Çakışması
Birden fazla uygulama aynı anda aynı portu kullanmaya çalıştığında bu hata ortaya çıkar. Çakışmayı çözmek için portu değiştirmek gerekebilir.
3. İşlem Bittiğinde Port Açılmamış Olabilir
Node.js uygulamanız kapanmış olabilir, ancak port hâlâ kullanımda gibi görünüyor. Bu, bazen işletim sistemi seviyesinde gerçekleşen bir durumdur ve portu serbest bırakmak için bazı ek adımlar gerekebilir.
EADDRINUSE Hatasını Nasıl Çözerim?
# 1. Kapatılmayan Node.js Uygulamasını Bulmak
lsof -i :3000
Bu komut, portu kullanan işlemin ID’sini (PID) gösterecektir. Şimdi bu işlemi sonlandırmak için aşağıdaki komutu kullanabilirsiniz:
kill -9 PID
Burada `PID` kısmını, az önce bulduğunuz işlem ID’si ile değiştirin. Bu komut, o portu kullanan işlemi öldürecektir ve port serbest kalacaktır.
# 2. Portu Değiştirmek
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3001; // Portu değiştirdik
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
Burada `3001` numaralı portu kullandık. Portu değiştirmek, hatayı çözmek için basit ama etkili bir yöntemdir.
# 3. Portu Serbest Bırakmak
Linux ve Mac için:
sudo kill -9 $(sudo lsof -t -i:3000)
Windows kullanıcıları için:
taskkill /F /PID
Bu komutlar portu kullanan işlemi sonlandırarak, tekrar kullanılabilir hale getirecektir.
Sonuç
Unutmayın, geliştirme sürecinde karşılaşılan her hata, bir öğrenme fırsatıdır. Hatalarla başa çıkarken, uygulamanızın daha sağlam bir hale geldiğini göreceksiniz. Başarılar!