Node.js "EADDRINUSE" Hatası ve Çözümü: Tekrar Etmeyecek

Bu yazıda, Node.js kullanıcılarının sıkça karşılaştığı **EADDRINUSE** hatasının ne olduğunu, nasıl çözülmesi gerektiğini ve bu hatayı engellemek için alabileceğiniz önlemleri detaylı bir şekilde inceledik.

BFS

Bir gün, sabah kahvenizi yudumlayarak projelerinize göz atmaya başladığınızda, karşılaştığınız mesaj ne yazık ki bir geliştiriciyi sinirden deliye döndürebilir: "EADDRINUSE". Hani o "Hadi be, ne oldu şimdi?" dediğiniz hatalardan. Bu yazımda, Node.js ile karşılaştığınız bu baş belası hatayı nasıl anlayıp düzeltebileceğinizi adım adım anlatacağım.

İlk Adım: Hata Mesajını Okuyun


"EADDRINUSE" hatasını, genellikle Node.js uygulamanızı başlatmaya çalıştığınızda görürsünüz. Mesaj şu şekilde olabilir:

```bash
Error: listen EADDRINUSE: address already in use 127.0.0.1:3000
```

Bu hata, Node.js'in belirli bir IP adresi ve port numarasını (bu örnekte `127.0.0.1:3000`) kullanmaya çalıştığı ancak bu portun zaten başka bir uygulama tarafından kullanıldığını gösterir. Yani, bir portun üzerine yazma yetkisine sahip olmamanızdan dolayı bu hatayı alırsınız.

Portun Kimliği: Hangi Uygulama Bu Portu Kullanıyor?


Şimdi, bu portu kullanan uygulamayı bulmamız gerekiyor. Çoğu zaman, terminal üzerinden şu komut ile kimlik tespiti yapabilirsiniz:

```bash
lsof -i :3000
```

Bu komut, `3000` portunu kullanan tüm işlemleri listeleyecektir. Eğer Windows kullanıyorsanız, PowerShell veya komut istemcisinde şu komutu kullanabilirsiniz:

```bash
netstat -ano | findstr :3000
```

Bu komutlar, ilgili portu hangi işlem numarasının (PID) kullandığını gösterecektir.

Portu Serbest Bırakmak: İşlem Sonlandırma


Portu kullanan işlemi bulduktan sonra, onu sonlandırarak portu serbest bırakabiliriz. Eğer Unix tabanlı bir işletim sistemi kullanıyorsanız, terminal üzerinden şu komutu verebilirsiniz:

```bash
kill -9 [PID]
```

Burada `[PID]`, önceki adımda bulduğunuz işlem kimliğidir. Windows üzerinde ise şu komut kullanılabilir:

```bash
taskkill /PID [PID] /F
```

Bu adımla, portu kullanan işlem sonlandırılacak ve portunuz tekrar kullanılabilir hale gelecektir.

Alternatif Çözüm: Farklı Bir Port Kullanın


Eğer yukarıdaki yöntemlerle portu serbest bırakmak istemiyorsanız ya da bu çözüm işe yaramazsa, yapabileceğiniz bir başka şey var: Uygulamanızın farklı bir portu kullanmasını sağlamak.

Node.js uygulamanızda kullanılan portu değiştirmek için aşağıdaki gibi bir yol izleyebilirsiniz:

```javascript
const express = require('express');
const app = express();

const port = process.env.PORT || 4000; // Yeni port
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
```

Bu kodda, `4000` portunu kullandık. Artık uygulamanız bu yeni port üzerinde çalışacaktır.

Hata Engelleme: Portu Her Zaman Kontrol Edin


Son olarak, bu hatanın tekrar etmemesi için bazı önlemler almakta fayda var. Uygulamanızı her başlatmadan önce, kullanılabilir portları kontrol eden küçük bir kontrol eklemek, hem sizin hem de uygulamanızın geleceği için faydalı olacaktır.

Örnek bir kontrol fonksiyonu:

```javascript
const net = require('net');

function isPortTaken(port) {
return new Promise((resolve, reject) => {
const server = net.createServer()
.once('error', (err) => {
if (err.code === 'EADDRINUSE') {
resolve(true); // Port kullanılıyor
} else {
reject(err);
}
})
.once('listening', () => {
server.close();
resolve(false); // Port kullanılmıyor
})
.listen(port);
});
}

isPortTaken(3000).then(isTaken => {
if (isTaken) {
console.log('Port 3000 already in use, please choose another one.');
} else {
console.log('Port 3000 is available!');
}
});
```

Bu kod, `3000` portunun kullanımda olup olmadığını kontrol eder ve sizi bilgilendirir. Böylece hatayı baştan engelleyebilirsiniz.

Sonuç: Bir Adım Daha İleriye


Node.js'in karşılaştığınız hatalarla başa çıkmak, zamanla alışacağınız bir şey olacak. EADDRINUSE hatası gibi basit ama can sıkıcı hatalarla karşılaşmak, sizi çözüm odaklı bir geliştirici yapar. Şimdi, öğrendiğiniz bu tekniklerle uygulamanızın gelişim sürecine hız katabilirsiniz.

İlgili Yazılar

Benzer konularda diğer yazılarımız

Modern Yazılım Geliştirme Süreçlerinde Yapay Zeka ve Otomasyonun Rolü: 2025’te Yeni Başlangıçlar

Yazılım geliştirme dünyası hızla evriliyor. 2025 yılına adım attığımızda, bu süreçte yapay zeka ve otomasyonun rolü hiç olmadığı kadar önemli hale geldi. Geçmişte yazılım geliştirme yalnızca kod yazmak ve sistemleri test etmekle sınırlıydı. Ancak bugünün...

Yazılım Geliştiriciler İçin Verimli Çalışma Alanı Oluşturmanın İpuçları: En İyi Araçlar ve Yöntemler

Verimli Bir Çalışma Alanı Neden Önemlidir?Yazılım geliştirici olmanın zorluklarından biri de sürekli odaklanmış ve üretken olabilmektir. Bir geliştirici olarak, işlerinizin çoğunu bilgisayar başında geçirirsiniz ve bu süre zarfında verimli bir çalışma...

OAuth2 Authentication Error: Nedenleri ve Çözümleri

OAuth2 Authentication Error: Gerçekten Neyin Peşindeyiz?Her geliştirici, kimlik doğrulama hatalarıyla bir noktada karşılaşmıştır. Ama bazen işler kontrolden çıkabiliyor. Eğer bir gün OAuth2 ile çalışırken bir kimlik doğrulama hatası aldığınızda, yalnız...