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!