Node.js EADDRINUSE Hatası: Sebepleri ve Çözüm Yolları

Node.js'deki EADDRINUSE hatasının nedenleri ve nasıl çözüleceği üzerine detaylı bir rehber. Port çakışmalarını nasıl engellersiniz, adım adım çözüm yolları.

BFS

Node.js geliştiricisi olarak çalışıyorsanız, “EADDRINUSE” hatasıyla karşılaşmamış olmanız neredeyse imkansız. Her şey mükemmel giderken, aniden karşınıza çıkan bu hata, genellikle portların zaten kullanımda olması nedeniyle meydana gelir. Hadi, bu hatanın ne olduğunu ve nasıl çözüleceğini detaylı bir şekilde inceleyelim.

EADDRINUSE Hatası Nedir?



Node.js ile geliştirdiğiniz uygulamanızı başlatırken karşılaştığınız "EADDRINUSE" hatası, sistemin belirli bir portu zaten başka bir işlem tarafından kullanıyor olduğunu belirten bir hata mesajıdır. Yani, uygulamanızın başlatmaya çalıştığı port başka bir uygulama tarafından işgal edilmiştir ve bu da Node.js'in doğru şekilde çalışmasını engeller.

Eğer terminal ekranınızda şöyle bir hata görüyorsanız:

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


Bu, Node.js'in 127.0.0.1 IP adresindeki 3000 numaralı portu kullanmaya çalışırken, başka bir uygulamanın bu portu zaten kullandığını gösteriyor.

EADDRINUSE Hatasının Nedenleri



Peki, bu hata neden oluşur? İşte birkaç olasılık:

1. Port Çakışması
Node.js uygulamanız bir portu dinlemeye çalışırken, o portu başka bir uygulama kullanıyor olabilir. Bu, özellikle geliştirme sırasında sıkça karşılaşılan bir durumdur.

2. Uygulamanın Durdurulamaması
Bazen uygulamanız doğru şekilde kapatılmayabilir veya bir işlem düzgün şekilde sonlandırılmayabilir. Bu durumda, port hâlâ "açık" olarak görünür, fakat aslında kullanılabilir değildir.

3. Geliştirme Ortamında Çoklu Başlatmalar
Özellikle frontend ve backend geliştirmelerinde, yanlışlıkla aynı portu iki kez dinlemeye çalışmak bu hatayı tetikleyebilir. Farkında olmadan iki farklı terminalde aynı portu kullanmaya çalışıyor olabilirsiniz.

EADDRINUSE Hatasını Çözmek İçin Yöntemler



EADDRINUSE hatasını çözmek için birkaç yöntem bulunmaktadır. İşte bunlar:

1. Portu Kapatmak
Öncelikle, hata mesajındaki portu kullanan işlemi bulmak ve durdurmak gerekir. Eğer hata mesajında port numarasını görüyorsanız (örneğin 3000), aşağıdaki komutla hangi işlemin bu portu kullandığını öğrenebilirsiniz.

Linux/macOS için terminal komutu:

lsof -i :3000


Windows için komut:

netstat -ano | findstr :3000


Yukarıdaki komut, belirtilen portu kullanan işlemi gösterecektir. Ardından, bu işlemi sonlandırarak portu serbest bırakabilirsiniz.

Linux/macOS'ta:

kill -9 [PID]


Windows’ta:

taskkill /PID [PID] /F


2. Farklı Bir Port Numarası Kullanmak
Eğer portu serbest bırakmak mümkün değilse, basit bir çözüm olarak uygulamanızın dinleyeceği portu değiştirebilirsiniz. İşte bir örnek:

app.listen(4000, () => {
  console.log('Sunucu 4000 numaralı portta çalışıyor');
});


Port numarasını değiştirdiğinizde, uygulamanız farklı bir port üzerinden çalışacaktır ve EADDRINUSE hatası engellenmiş olur.

3. Portu Dinleyen Uygulamanın Kapanmasını Sağlamak
Eğer uygulamanız kapatılmıyorsa, portu düzgün şekilde serbest bırakmak için uygulamanın yönetildiği terminalde şu komutu çalıştırabilirsiniz:

Ctrl + C


Bu, terminalde çalışan uygulamanın durmasına yardımcı olur ve portu serbest bırakır.

4. Uygulamanızı Yeniden Başlatmak
Bazen basit bir yeniden başlatma, tüm port sorunlarını çözüme kavuşturabilir. Sunucuyu yeniden başlatarak, eski bağlantıların temizlenmesini sağlayabilirsiniz.

Sonuç



EADDRINUSE hatası, Node.js geliştiricilerinin sıkça karşılaştığı ve bazen can sıkıcı olabilen bir durumdur. Ancak, portu kullanan süreci bulmak, portu değiştirmek veya uygulamanızı düzgün şekilde kapatmak gibi basit çözümlerle bu sorunu rahatlıkla çözebilirsiniz.

Unutmayın, Node.js’in sağlıklı çalışabilmesi için, uygulamanızın kullandığı portların yönetilmesi çok önemlidir. Geliştirme sürecinde, portları yönetmek ve hata mesajlarını doğru anlamak, verimli bir çalışma ortamı oluşturmanıza yardımcı olacaktır.

İlgili Yazılar

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

ASP.NET Core ile Mobil Uygulama Geliştirme: Cross-Platform Web ve Mobil Uygulama Birleştirme

Günümüzde mobil uygulamalar hayatımızın ayrılmaz bir parçası haline geldi. Akıllı telefonlarımızda geçirdiğimiz zamanın büyük bir kısmını mobil uygulamalar sayesinde geçiriyoruz. Peki, bir mobil uygulama geliştirirken karşılaştığımız zorlukları nasıl...

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...

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...