EADDRINUSE Hatası Nedir?
Örneğin, Node.js ile geliştirilen bir web uygulaması, genellikle 3000 numaralı portu dinler. Eğer başka bir uygulama (belki de önceki uygulamanız) aynı portu kullanıyorsa, EADDRINUSE hatası ile karşılaşırsınız.
Hata Mesajı Örneği:
Error: listen EADDRINUSE: address already in use 127.0.0.1:3000
at Server.setupListenHandle [as _listen2] (net.js:1317:16)
at listenInCluster (net.js:1372:12)
at Server.listen (net.js:1460:7)
```
Bu hata mesajı, port 3000'in başka bir süreç tarafından kullanıldığını açıkça belirtir.
EADDRINUSE Hatası Nasıl Çözülür?
Öncelikle, hangi portun kullanımda olduğunu kontrol edin. Terminal veya komut satırında aşağıdaki komutları kullanabilirsiniz.
Windows için:
```
netstat -ano | findstr :3000
```
Mac/Linux için:
```
lsof -i :3000
```
Bu komutlar, 3000 numaralı portu kullanan süreci gösterir. Eğer başka bir işlem bu portu kullanıyorsa, işlem kimliğini (PID) öğrenebilirsiniz.
Eğer bir işlem, kullandığınız portu işgal ediyorsa, o süreci sonlandırmanız gerekir. PID’yi öğrendikten sonra, o işlemi sonlandırabilirsiniz.
Windows için:
```
taskkill /PID
```
Mac/Linux için:
```
kill -9
```
Bu komut, belirtilen PID’ye sahip işlemi sonlandırarak portu serbest bırakır.
Eğer portunuzu boşaltmak istemiyorsanız ya da bu tür sorunlar sık sık yaşanıyorsa, uygulamanızı farklı bir port üzerinden çalıştırabilirsiniz. Bunun için kodunuzda portu değiştirebilirsiniz.
Aşağıdaki gibi bir değişiklik yaparak farklı bir port belirleyebilirsiniz:
kopyalaconst express = require('express'); const app = express(); // Farklı bir port numarası belirliyoruz. const PORT = 4000; app.listen(PORT, () => { console.log(`Uygulama ${PORT} numaralı portta çalışıyor!`); });
Bu şekilde, artık uygulamanız 4000 numaralı port üzerinden çalışacaktır ve EADDRINUSE hatasından kaçınabilirsiniz.
Uygulamanızın çalışırken otomatik olarak kapanmasını ve portu serbest bırakmasını sağlamak için, kodunuzda bir hata yakalama mekanizması eklemek de iyi bir çözüm olabilir.
Örneğin, aşağıdaki gibi basit bir hata yönetimi ekleyebilirsiniz:
kopyalaconst express = require('express'); const app = express(); const PORT = 3000; app.listen(PORT, (err) => { if (err) { console.error('Port kullanım hatası:', err); process.exit(1); // Uygulama hatayla çıkacak ve port serbest kalacak } console.log(`Uygulama ${PORT} numaralı portta çalışıyor!`); });