Bir gün, uygulamanız üzerinde yoğun bir şekilde çalışırken aniden karşılaştığınız bir hata ile karşılaştınız. Bu hata, "EADDRINUSE" hatasıydı. Ne yazık ki, bu hata genellikle port çakışmalarından kaynaklanır. Yani, istediğiniz port numarasını başka bir uygulama kullanıyordur ve bu da Node.js uygulamanızın o portu kullanmasına engel olur.
Hayal edin, sabah kahvenizi almış, kodu yazmaya başlamışsınız. Fakat birden şu hata mesajını görüyorsunuz:
Error: listen EADDRINUSE 0.0.0.0:3000
Bu, çok yaygın bir Node.js hatasıdır. Hata şunu söylüyor: "Bu port (3000) zaten başka bir işlem tarafından kullanılıyor." Şimdi, panik yapmadan önce, bu hatayı nasıl çözeceğinizi anlamaya çalışalım.
EADDRINUSE Hatası Nedir?
Bu sorunla karşılaşmanın birkaç yaygın nedeni olabilir:
- Bir önceki Node.js uygulaması kapatılmadan başka bir uygulama açıldı.
- Farkında olmadan başka bir servis, o portu kullanıyor olabilir.
- Sunucu yeniden başlatıldığında port serbest bırakılmamış olabilir.
EADDRINUSE Hatasını Nasıl Çözebilirsiniz?
# 1. Hangi Uygulamanın Portu Kullandığını Bulun
İlk adım, portu kullanan uygulamayı bulmaktır. Eğer Linux veya macOS kullanıyorsanız, şu komut ile hangi uygulamanın portu kullandığını öğrenebilirsiniz:
lsof -i :3000
Windows kullanıyorsanız şu komutu yazabilirsiniz:
netstat -ano | findstr :3000
Bu komutlar, o portu hangi işlem numarasının kullandığını gösterecektir. Eğer bir uygulama, o portu kullanıyorsa, işlem numarasını (PID) bulabilirsiniz.
# 2. İlgili Uygulamayı Sonlandırın
Portu kullanan uygulamayı bulduktan sonra, bu uygulamayı sonlandırmanız gerekecek. Linux veya macOS'ta şu komutla bunu yapabilirsiniz:
kill -9 PID
Windows kullanıyorsanız:
taskkill /PID PID /F
Buradaki PID kısmı, yukarıda bulduğunuz işlem numarasıdır.
# 3. Portu Değiştirme
Eğer portu kullanan uygulamayı sonlandıramazsanız veya bu hatayı sürekli alıyorsanız, başka bir port numarası seçmek en hızlı çözüm olacaktır. Node.js uygulamanızda port numarasını değiştirmek için basitçe şu kodu kullanabilirsiniz:
const express = require('express');
const app = express();
const port = 3001; // Farklı bir port numarası seçin
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
Bu şekilde, uygulamanızın başka bir portu dinlemesini sağlayabilirsiniz.
# 4. Portu Dinleyen Uygulamanın Çalışıp Çalışmadığını Kontrol Edin
Son olarak, eğer portu değiştirmek istemiyorsanız, terminal üzerinden portu dinleyen uygulamanın gerçekten çalışıp çalışmadığını kontrol edebilirsiniz. Eğer beklemediğiniz bir durum varsa, sisteminizi yeniden başlatmayı da deneyebilirsiniz. Bazen, portu kullanan işlem bitmemiş olabilir, bu yüzden yeniden başlatma bu tür hataların çözülmesinde faydalı olabilir.
Node.js üzerinde EADDRINUSE hatası almanız, oldukça sık karşılaşılan bir sorundur. Çözümü ise oldukça basittir. Port çakışmalarını tespit edebilir, portu değiştirebilir veya ilgili uygulamayı sonlandırabilirsiniz. Uygulamanızın düzgün bir şekilde çalışması için bu gibi hataları hızla çözebilmeniz önemlidir.
Artık bu hata ile karşılaştığınızda ne yapmanız gerektiğini biliyorsunuz. Kendinize güvenin, Node.js dünyasında sorunları çözme zamanı geldi!