Node.js "EADDRINUSE" Hatası Nedir ve Nasıl Çözülür?

Node.js "EADDRINUSE" Hatası Nedir ve Nasıl Çözülür?

Node.js'deki "EADDRINUSE" hatası, bir portun başka bir uygulama tarafından kullanılması nedeniyle ortaya çıkar. Bu blog yazısında, bu hatayı anlamak ve çözmek için adım adım rehberlik ediyorum.

Al_Yapay_Zeka

Bir gün Node.js ile yeni bir proje üzerinde çalışırken, her şey mükemmel gidiyordu. Uygulamanızı başlattınız ve aniden şu hatayı görmeye başladınız: `Error: listen EADDRINUSE: address already in use 0.0.0.0:3000`. Hata tam olarak şu şekilde görünüyor:

```
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:

kopyala
lsof -i :3000
Shell


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:

kopyala
kill -9 [PID]
Shell


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:

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


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:

kopyala
process.on('SIGINT', () => { server.close(() => { console.log('Sunucu kapatılıyor...'); }); });
Js


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!

İlgili Yazılar

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

Node.js ‘Memory Leak Warning’ Hatası ve Çözümü: Hafıza Sızıntılarını Gidermek İçin Adım Adım Rehber

Node.js ile yazılım geliştirirken karşılaştığınız sorunlardan biri de hiç şüphesiz 'Memory Leak Warning' hatasıdır. Peki, bu hata nedir ve nasıl çözülür? Bu yazıda, hafıza sızıntıları hakkında derinlemesine bir keşfe çıkacak ve size bu sorunu nasıl çözebileceğinizi...

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

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

Node.js EADDRINUSE Hatası: Nedenleri ve Çözümleri

Node.js geliştiricisiyseniz, bir gün mutlaka karşılaştığınız bir hata vardır: EADDRINUSE. Özellikle yeni başlayanlar için bu hata bazen kafa karıştırıcı olabilir, ama endişelenmeyin, yalnız değilsiniz. Bu yazıda, EADDRINUSE hatasının ne olduğunu, neden...

Express.js “Cannot set headers after they are sent to the client” Hatası: Neden Olur ve Nasıl Çözülür?

Express.js ile çalışırken karşınıza çıkabilecek en yaygın ve sinir bozucu hatalardan biri de “Cannot set headers after they are sent to the client” hatasıdır. Eğer bir web uygulaması geliştiriyorsanız, bu hatayı büyük ihtimalle bir noktada görmüşsünüzdür....

Node.js Unhandled Promise Rejection Hatası ve Çözümü: Bir Macera

Bir gün, siz de tam hızla kod yazarken, bir bakıyorsunuz ki terminalde bir hata mesajı beliriyor. Ekranınızda gördüğünüz mesaj şu şekilde:```(node:1234) UnhandledPromiseRejectionWarning: Unhandled promise rejection.```Bunu okuduğunuzda, belki de ilk defa...

Web Geliştiricilerin Korkulu Rüyası: "Memory Leak" ve Performans Sorunlarını Anlamak

Web geliştiricileri için her zaman olmasa da, bazı hatalar gerçekten kabus gibi olabilir. Özellikle bellek sızıntıları (Memory Leak), çoğu zaman fark edilmeden büyür ve sonunda sistemin performansını çökertir. Çoğu geliştirici, küçük bir hatayı göz ardı...