EADDRINUSE Hatası Nedir?
Bu hatayı gördüğünüzde, portunuzun başka bir uygulama tarafından işgal edilmiş olduğunu anlamalısınız. Yani, Node.js'iniz çalışmaya başlamadan önce, önceden o portu kullanan başka bir işlem var demektir.
Hata Mesajı Nasıl Görünür?
Error: listen EADDRINUSE 0.0.0.0:3000
at Object._errnoException (util.js:1022:11)
at _exceptionWithHostPort (util.js:1044:20)
at Server.setupListenHandle [as _listen2] (net.js:1348:14)
at listenInCluster (net.js:1395:12)
at Server.listen (net.js:1481:7)
at Object. (/path/to/your/app.js:10:5)
at Module._compile (node:internal/modules/cjs/loader:1221:14)
Bu mesaj, Node.js'in belirttiğiniz portu (örneğin, 3000) kullanmak istediğini, ancak bu portun başka bir işlem tarafından zaten kullanıldığını gösteriyor.
EADDRINUSE Hatası Nasıl Çözülür?
# 1. Portu Kullanan Uygulamanın Bulunması
Windows:
netstat -ano | findstr :3000
Bu komut, 3000 numaralı portu kullanan işlemi gösterecektir.
Linux/Mac:
lsof -i :3000
Bu komut da aynı şekilde, belirtilen portu kullanan işlemi gösterecektir.
# 2. İlgili İşlemi Durdurmak
Windows:
taskkill /PID /F
Linux/Mac:
kill -9
Burada `
# 3. Uygulamanızı Yeniden Başlatmak
Diğer Çözümler
# 1. Farklı Bir Port Kullanmak
const express = require('express');
const app = express();
// Portu değiştirelim
const port = process.env.PORT || 3001;
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
Burada, port numarasını değiştirdik ve artık 3001 numaralı portu kullanacağız.
# 2. Portu Dinamik Olarak Kontrol Etmek
const net = require('net');
const port = 3000;
const server = net.createServer();
server.listen(port, () => {
console.log(`Port ${port} is available and the server is running!`);
});
server.on('error', (err) => {
if (err.code === 'EADDRINUSE') {
console.log(`Port ${port} is already in use, trying a new port...`);
server.listen(port + 1); // Yeni port denemesi
}
});
Bu örnekte, eğer 3000 numaralı port kullanılabiliyorsa sunucu başlatılacak, eğer port kullanılıyorsa, bir sonraki port olan 3001 numarasına geçilecektir.
Sonuç
Umarım bu yazı sizin için faydalı olmuştur. Hadi, kodlarınıza geri dönün ve hatasız bir şekilde çalışmaya devam edin!