```
Error: listen EADDRINUSE: address already in use 0.0.0.0:3000
```
Evet, doğru tahmin ettiniz! Bu, EADDRINUSE hatasıdır. Hadi gelin, bu hatanın ne olduğunu ve nasıl çözüleceğini adım adım keşfedelim.
“EADDRINUSE” Hatasının Anlamı
Öncelikle, bu hatanın ne anlama geldiğini anlamamız gerek. Node.js uygulamanız, belirli bir port üzerinde çalışıyor ve bu port genellikle `3000`, `8080`, `5000` gibi yaygın numaralarla karşımıza çıkar. Ancak bu port, başka bir işlem veya uygulama tarafından kullanılmaya başlanmışsa, Node.js yeni uygulamanız için bu portu kullanmakta zorluk yaşar. İşte bu durumda "EADDRINUSE" hatası meydana gelir.
Bu hata, iki temel nedenden dolayı ortaya çıkabilir:
1. Port Çakışması: Eğer başka bir uygulama o portu kullanıyorsa, Node.js onunla aynı portu paylaşmaya çalışır ve hata alırsınız.
2. Uygulama Yeniden Başlatıldığında Aynı Portun Kilitlenmesi: Node.js uygulamanızı kapattıktan sonra bazen o port serbest kalmaz ve sistem tarafından kilitlenir. Bu durumda da aynı hatayı alırsınız.
Bu Hata Nasıl Çözülür?
EADDRINUSE hatasını çözmenin birkaç yolu vardır. Şimdi bu yolları keşfedelim.
1. Kullanılan Portu Bulmak
İlk adım, hangi uygulamanın o portu kullandığını bulmaktır. Bunun için terminal veya komut istemcisine şu komutu yazabilirsiniz:
kopyalalsof -i :3000
Bu komut, `3000` portunu kullanan işlemi listeleyecektir. Eğer bu işlem bir başka uygulama ise, ona son verebilir ve portu serbest bırakabilirsiniz.
2. Uygulamayı Zorla Durdurmak
Eğer portu hangi uygulamanın kullandığını öğrendiniz ve durdurulması gerekiyorsa, o zaman şu komutla uygulamayı sonlandırabilirsiniz:
kopyalakill -9 [PID]
Burada `[PID]`, o portu kullanan işlemin Process ID numarasını temsil eder. Bu komutla, o işlemi zorla sonlandırarak portu serbest bırakabilirsiniz.
3. Farklı Bir Port Seçmek
Eğer portu serbest bırakmak veya başka bir uygulamayı sonlandırmak istemiyorsanız, bir başka kolay çözüm de farklı bir port numarası kullanmaktır. Uygulamanızı başlatırken farklı bir port numarası belirleyebilirsiniz. Örneğin, Node.js uygulamanızı başlatırken şu şekilde yapabilirsiniz:
kopyalaapp.listen(3001, () => { console.log('Uygulama 3001 portunda çalışıyor...'); });
Burada `3001` portunu kullandık. Bu, EADDRINUSE hatasının önüne geçmek için basit ve etkili bir yöntemdir.
4. Uygulamanın Portu Serbest Bırakmasını Sağlamak
Bir diğer çözüm yolu, uygulamanızın düzgün bir şekilde kapatıldığından emin olmaktır. Eğer Node.js uygulamanız bir şekilde sonlandırıldığında portu serbest bırakmıyorsa, bu sorunu çözmek için bir hata yakalama işlemi ekleyebilirsiniz. Örneğin:
kopyalaprocess.on('SIGINT', () => { server.close(() => { console.log('Sunucu kapatılıyor...'); }); });
Bu, uygulamanızın düzgün bir şekilde kapatılmasını sağlayarak portun serbest kalmasını sağlar.
Sonuç
Node.js ile geliştirdiğiniz projede karşılaştığınız EADDRINUSE hatası, genellikle port çakışmasından kaynaklanır. Bu yazıda, hatayı nasıl tanıyacağınızı, hangi adımları izleyerek çözebileceğinizi ve hangi yöntemlerin işinize yarayacağını öğrendiniz. Bu hatayla karşılaştığınızda panik yapmayın; çünkü çözümü oldukça basit ve hızlıdır.
Unutmayın, her zaman doğru portu seçtiğinizden, uygulamanızın düzgün kapandığından ve başka uygulamaların portunuzu kullanmadığından emin olun. İşte bu kadar basit!