EADDRINUSE Nedir?
Node.js ile çalışırken, genellikle şu hatayı alırsınız:
```
Error: listen EADDRINUSE: address already in use 127.0.0.1:3000
```
Bu hata, Node.js'in başlatmak istediğiniz sunucunun kullanmaya çalıştığı portun (bu örnekte 3000) zaten başka bir süreç tarafından kullanıldığını belirtir. Yani, bu port üzerinde başka bir uygulama çalışıyordur ve Node.js o portu kullanarak başlamak istese de bu mümkün olmuyor.
Port Çakışması olarak da adlandırılabilecek bu sorun, genellikle portu serbest bırakmayı unuttuğumuzda, aynı portu birden fazla kez kullanmaya çalıştığımızda veya bir uygulama beklenmedik şekilde kapanıp portu serbest bırakmadığında ortaya çıkar.
EADDRINUSE Hatası ile Karşılaştığınızda Ne Yapmalısınız?
Şimdi gelin, bu hatayı nasıl çözebileceğimize bakalım. İlk başta paniğe kapılmayın, bu tür hatalar genellikle oldukça basit çözümlerle halledilebilir.
1. Çalışan Uygulamayı Bulun ve Kapatın
EADDRINUSE hatası, genellikle kullanılan portu serbest bırakmayan bir uygulamadan kaynaklanır. Bu durumda, portu hangi uygulamanın kullandığını bulmanız gerekir.
Linux veya MacOS kullanıyorsanız, şu komut ile o portu kullanan süreci bulabilirsiniz:
lsof -i :3000
Windows kullanıcıları içinse şu komut ile portu kullanan süreci bulabilirsiniz:
netstat -ano | findstr :3000
Bu komutlar, o portu kullanan işlemi size gösterecektir. Şimdi bu süreci sonlandırarak portu serbest bırakabiliriz.
Linux veya MacOS'ta, bu işlemi şu şekilde yapabilirsiniz:
kill -9
Windows’ta ise şu komutu kullanarak süreci sonlandırabilirsiniz:
taskkill /PID /F
2. Node.js Sunucusunu Yeniden Başlatın
Eğer portu serbest bırakıp süreci sonlandırdıysanız, Node.js uygulamanızı yeniden başlatmayı deneyin. Bu, genellikle hatayı çözecektir.
3. Alternatif Bir Port Seçin
Bazen, basitçe farklı bir port kullanmak da çözüm olabilir. Örneğin, 3000 portu doluysa, 3001 veya 5000 gibi başka bir portu seçebilirsiniz. Bunun için Node.js uygulamanızda şu şekilde port numarasını değiştirebilirsiniz:
const http = require('http');
const hostname = '127.0.0.1';
const port = 3001; // Port numarasını değiştirdik
http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
}).listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
4. Portu Dinleyen Uygulamaları Kontrol Edin
Eğer portu kullanan süreci bulamıyorsanız, başka bir uygulamanın arka planda çalışıyor olabileceğini unutmayın. Özellikle sunucu çalışırken terminali kapatmış olabilirsiniz, ancak süreç hâlâ çalışıyor olabilir. Bu tür durumlarda, terminaldeki geçmiş komutları kontrol edebilir ve ilgili süreci sonlandırabilirsiniz.
Sonuç
Node.js’te karşılaşılan "EADDRINUSE" hatası, genellikle port çakışmalarından kaynaklanır ve çözümü oldukça basittir. Süreci bulup sonlandırmak, port numarasını değiştirmek veya sunucunuzu yeniden başlatmak genellikle problemi çözecektir. Bu adımları takip ettiğinizde, bir sonraki Node.js uygulamanızda port çakışmaları nedeniyle zaman kaybetmeden hızla çözüm bulabilirsiniz.
Önemli Not: Uygulamanızın her zaman doğru portu kullandığından ve gereksiz uygulamaları sonlandırdığınızdan emin olun. Böylece "EADDRINUSE" hatasını bir daha yaşamazsınız.