Node.js EADDRINUSE Hatası: Neden Olur ve Nasıl Çözülür?

Node.js'teki EADDRINUSE hatasını ve bu hatanın nasıl çözüleceğini adım adım açıklayan kapsamlı bir rehber.

BFS

Bir gün sabah, serverınızı başlatmaya karar verdiniz. Yavaşça komut satırına şu komutu yazdınız:


node app.js


Ve bekliyorsunuz… Ancak aniden aşağıdaki hata ile karşılaşıyorsunuz:

```
Error: listen EADDRINUSE: address already in use
```

İşte, bu tanıdık hata Node.js'in en sinir bozucu hatalarından birisidir: EADDRINUSE! Şimdi panik yapmayın. Bu yazıda, bu hatanın ne olduğunu, neden meydana geldiğini ve nasıl kolayca çözüleceğini keşfedeceğiz.

EADDRINUSE Hatası Nedir?



EADDRINUSE, “Address already in use” anlamına gelir. Yani, kullanmaya çalıştığınız IP adresi ve port kombinasyonu zaten başka bir süreç tarafından kullanılmaktadır. Node.js uygulamanız belirli bir port üzerinde çalışmak istiyor ama o port halihazırda başka bir işlem tarafından meşgul. Bu genellikle, o portu kullanan eski bir Node.js uygulamasının veya başka bir programın olduğu durumlarda gerçekleşir.

Bu Hata Neden Oluşur?



Node.js’te her uygulama bir IP adresi ve port üzerinden çalışır. Eğer aynı portu kullanan başka bir uygulama çalışıyorsa, yeni başlatmaya çalıştığınız uygulama bu portu alırken EADDRINUSE hatasını alır. Bu hata genellikle aşağıdaki nedenlerden kaynaklanır:

1. Aynı Portu Kullanan Uygulamalar: Eğer daha önce başlatılmış bir uygulama hala o portu kullanıyorsa, yeni başlatmaya çalıştığınız uygulama bu portu alamaz.
2. Kapanmayan İşlemler: Bazen, bir uygulama düzgün şekilde kapanmayabilir ve portu serbest bırakmayabilir. Böylece, başka bir uygulama aynı portu kullanmaya çalıştığında hata meydana gelir.
3. Arka Planda Çalışan Node.js Uygulamaları: Eğer terminal veya komut satırında eski bir işlem çalışıyorsa, bu da portun kullanımda olmasına yol açar.

Bu Hata Nasıl Çözülür?



Endişelenmeyin, çözüm çok basit. Aşağıdaki adımları takip ederek hatayı kolayca çözebilirsiniz.

1. Çalışan Node.js Süreçlerini Kontrol Edin



İlk adım, hangi sürecin portu kullandığını bulmaktır. Bu işlem için aşağıdaki komutu kullanabilirsiniz:


lsof -i :PORT_NUMARASI


Burada `PORT_NUMARASI` kısmını kullanmaya çalıştığınız port numarasıyla değiştirebilirsiniz. Bu komut, o portu kullanan işlemi gösterecektir. Örneğin, port numaranız `3000` ise şu şekilde yazmanız gerekecek:


lsof -i :3000


Eğer bu komutla bir işlem bulursanız, bu işlemi sonlandırabilirsiniz.

2. Portu Kullanan Süreci Sonlandırın



Portu kullanan işlemi sonlandırmak için aşağıdaki komutu kullanabilirsiniz:


kill -9 PID


Buradaki `PID` kısmını, `lsof` komutundan aldığınız işlem ID'si ile değiştirin. Bu komut, o süreci sonlandırarak portu serbest bırakacaktır.

3. Uygulamanızın Portunu Değiştirin



Eğer önceki adımlar işe yaramazsa veya bu hatayla sürekli karşılaşıyorsanız, uygulamanızın portunu değiştirmeyi deneyebilirsiniz. Örneğin, `app.js` dosyanızda aşağıdaki gibi portu değiştirebilirsiniz:


app.listen(3001, () => {
  console.log("Uygulama 3001 portunda çalışıyor.");
});


Bu durumda, eski portun yerine yeni bir portu kullanarak aynı hatadan kaçınabilirsiniz.

4. Sistemi Yeniden Başlatın



Eğer hala sorunu çözemediyseniz, bilgisayarınızı yeniden başlatmak da işe yarayabilir. Bazen eski süreçler sistem tarafından tam olarak serbest bırakılmamış olabilir, ancak yeniden başlatmak tüm süreçleri temizleyecektir.

Sonuç:



Node.js “EADDRINUSE” hatası, çoğunlukla basit bir port çakışmasından kaynaklanır ve çözülmesi oldukça kolaydır. Çalışan süreçleri kontrol etmek, portu değiştirmek veya bilgisayarınızı yeniden başlatmak gibi basit adımlarla bu hatadan kolayca kurtulabilirsiniz.

Umarım bu yazı, Node.js geliştirme sürecinizde karşılaştığınız bu hatayı anlamanızı ve çözmenizi kolaylaştırmıştır. Eğer başka sorularınız varsa, yorumlar kısmında benimle paylaşabilirsiniz. Hadi bakalım, kodlamaya devam edin!

İlgili Yazılar

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

NetBeans Debugging Başlatılmıyor – Çözüm Adımları ile Sorunu Gidermek

Her programcı, özellikle de yeni başlayanlar, zaman zaman NetBeans gibi popüler bir IDE kullanırken sorunlarla karşılaşabilirler. Bu sorunlar arasında en sinir bozucusu, şüphesiz "Debugging Başlatılmıyor" hatasıdır. Ancak merak etmeyin, bu hata tek bir...

ASP.NET Core 500 Internal Server Error: Sebepleri ve Çözümleri

Bir web geliştiricisi olarak, karşılaştığınız en zorlayıcı hatalardan biri şüphesiz "500 Internal Server Error"dır. Bu hata, web uygulamanızda her şeyin yolunda gittiğini düşündüğünüz bir anda karşınıza çıkabilir ve tüm projeyi durdurabilir. Ancak merak...

Steam İstemcisinin Çökmesi: Sorunları Çözmek İçin Pratik Adımlar

Steam İstemcisinin Çökme Sorunu Neden Olur?Merhaba! Eğer sen de Steam istemcisinin birden bire çökmesiyle karşılaştıysan, yalnız değilsin. Bu, aslında pek çok Steam kullanıcısının karşılaştığı yaygın bir sorun. Steam, oyun dünyasının en popüler platformlarından...