EADDRINUSE Hatası Nedir?
Hadi bir hayal kuralım. Geliştirdiğiniz mükemmel bir Node.js uygulaması var ve uygulamanızı çalıştırmaya karar verdiniz. Terminali açıp, `node app.js` komutunu yazıyorsunuz. Ama sonra… bam! Bir hata mesajı görüyorsunuz:
Error: listen EADDRINUSE: address already in use 127.0.0.1:3000
İşte bu mesaj, EADDRINUSE hatasıdır ve hemen anlamanızı sağlar: Port zaten başka bir uygulama tarafından kullanılıyor. Yani, uygulamanız bir portu dinlemeye çalışıyor, ancak o port başka bir işlem tarafından kapılmış. Bu durumda, Node.js, portu kullanamayacağı için uygulamanız başlamaz.
Neden EADDRINUSE Hatası Alırım?
EADDRINUSE hatasını almanın birkaç nedeni olabilir:
1. Port Çakışması: Bir başka program ya da Node.js uygulamanız daha önce aynı portu kullanıyor olabilir.
2. Uygulama Kapanmamış Olabilir: Uygulamanız düzgün kapanmamışsa, port üzerinde bir "hayalet" işlem kalmış olabilir.
3. Yerel Geliştirme: Çoğu zaman, yerel geliştirme ortamlarında bu hata, geliştiricinin uygulamayı birden fazla kez başlatmaya çalışmasından kaynaklanır.
Çözüm Yolları
Peki, EADDRINUSE hatasıyla karşılaştığınızda ne yapmalısınız? İşte birkaç çözüm önerisi:
1. Çalışan Uygulamaları Kontrol Etme:
Eğer portun zaten başka bir uygulama tarafından kullanıldığını düşünüyorsanız, terminalde aşağıdaki komutu kullanarak o portu kullanan işlemi bulabilirsiniz:
lsof -i :3000
Bu komut, 3000 portunu kullanan işlemi gösterir. Sonrasında, bu işlemi sonlandırarak (kill komutuyla) portu boşaltabilirsiniz:
kill -9 [PID]
2. Portu Değiştirme:
Eğer 3000 portu başkası tarafından kullanılıyorsa, hemen başka bir port kullanabilirsiniz. Bunu, uygulamanızın başlangıç kodunda değiştirebilirsiniz:
const express = require('express');
const app = express();
const port = 3001; // Portu değiştirdik!
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
3. Uygulamanın Hangi Süreçte Olduğunu Kontrol Etme:
Bazen uygulamanız kapanmaz ve "hayalet" bir işlem olarak kalabilir. Bu durumda, terminalde çalıştırdığınız komutları dikkatlice kontrol edin. Uygulamanızın birden fazla işlemde çalışıyor olup olmadığını kontrol edin ve gerekirse işlemi sonlandırın.
4. Terminali Yeniden Başlatma:
Birçok geliştirici, terminalde işlem çalıştırmaya devam ederken, uygulamanın hala arka planda çalıştığını fark etmez. Terminali kapatıp yeniden başlatmak, çoğu zaman problemi çözecektir.
Sonuç
Node.js'in sunduğu geliştirici dostu deneyim, bazen bu tür küçük hatalarla test edilebilir. EADDRINUSE hatası, genellikle basit bir port çakışmasından kaynaklanır, ama bu sorunu çözmek için birkaç adımda rahatlıkla çözebilirsiniz. Portu değiştirmek ya da çalışan işlemleri sonlandırmak, bu hatayı engellemeye yardımcı olacaktır.
Bir dahaki sefere bu hatayı aldığınızda, panik yapmanıza gerek yok. Yukarıdaki adımları takip edin ve uygulamanızın doğru portta çalışmasını sağlayın. Geliştiricilik yolculuğunuzda bu tür hatalarla karşılaşmanız kaçınılmaz ama onlardan ders çıkarmak ve çözüm bulmak, sizi daha güçlü bir geliştirici yapacaktır.