EADDRINUSE Hatası Nedir?
"EADDRINUSE" hatası, temel olarak iki işlemin aynı anda aynı portu kullanmaya çalışmasından kaynaklanır. Node.js uygulamanızda belirttiğiniz port numarasını, başka bir uygulama ya da önceden çalıştırdığınız bir başka Node.js servisi kullanıyordur. Sunucunuz bu portu kullanmaya çalıştığında, o portun zaten başka bir işlem tarafından işgal edildiğini öğrenir ve size bu hatayı verir.
Bu Hata ile Karşılaşmak Neden Zorlayıcı Olabilir?
Bazen bu hata, aynı port üzerinde çalışan eski bir uygulamanın hala arka planda aktif olmasından kaynaklanabilir. Hatta sunucuyu kapattığınızı düşündüğünüzde, arka planda bir işlem hala devam ediyor olabilir. Bu durumda hata almanız oldukça doğal olacaktır. Ama merak etmeyin, bu sorunu çözmek için birkaç farklı yol mevcut.
EADDRINUSE Hatasını Çözmek İçin Adımlar
İlk olarak, portun hangi işlem tarafından kullanıldığını bulmamız gerekiyor. Bunun için aşağıdaki komutları kullanabilirsiniz.
lsof -i :3000
Bu komut, port numarası 3000 olan işlemleri listeleyecektir. Çoğu zaman, Node.js uygulamanız bu portu kullanmaya çalışıyor olabilir. Çıktıyı gördüğünüzde, işlem numarasını (PID) göreceksiniz. Bu işlem numarasını kullanarak, o işlemi sonlandırabilirsiniz.
kill -9 PID
Buradaki PID'yi, önceki komutla öğrendiğiniz işlem numarasıyla değiştirin. Bu işlem, ilgili süreci sonlandırarak portu serbest bırakacaktır.
Alternatif Çözüm: Farklı Bir Port Kullanmak
Eğer başka bir çözüm arıyorsanız, Node.js uygulamanızda portu değiştirmek de iyi bir alternatif olabilir. Port numarasını değiştirmek oldukça basit ve hızlı bir çözüm sağlar.
Örneğin, uygulamanızda şu şekilde bir port tanımlaması varsa:
app.listen(3000, () => {
console.log('Sunucu 3000 portunda çalışıyor');
});
Portu değiştirmek için sadece 3000 sayısını başka bir numarayla değiştirebilirsiniz. Örneğin:
app.listen(4000, () => {
console.log('Sunucu 4000 portunda çalışıyor');
});
Böylece başka bir portu kullanarak uygulamanızı sorunsuzca çalıştırabilirsiniz.
Portu Serbest Bırakmak İçin Uygulama Kapatma
Eğer uygulamanız üzerinde çalıştığınız portu serbest bırakmak istiyorsanız, Node.js uygulamanızı düzgün bir şekilde kapattığınızdan emin olmalısınız. Bazı durumlarda, sunucuyu kapatmak yeterli olmayabilir. Örneğin, `Ctrl + C` ile terminalde sunucuyu kapattığınızda, bu bazen arka planda hala aktif kalmasına neden olabilir. Bu tür durumlarda, yukarıda bahsettiğimiz işlem sonlandırma komutlarıyla bu süreci kesin olarak bitirebilirsiniz.
Sonuç
Node.js’de "EADDRINUSE" hatası, bir portun zaten başka bir işlem tarafından kullanılması sonucu meydana gelir. Bu hatayı çözmek için, portu kullanan işlemi sonlandırabilir ya da farklı bir port numarası seçebilirsiniz. Hem bu çözüm yolları oldukça basit hem de çok yaygın olarak karşılaşılan bir hata olduğundan, geliştirme sürecinde oldukça yardımcı olacaktır. Artık bu hatayla karşılaşırsanız, adım adım ne yapmanız gerektiğini biliyorsunuz!