EADDRINUSE Hatası Nedir?
Node.js ile çalışırken karşılaştığınız "EADDRINUSE" hatası, bilgisayarınızdaki bir portun zaten başka bir uygulama tarafından kullanıldığı anlamına gelir. Yani, sizin uygulamanız çalışmaya başlamadan önce, başka bir işlem o portu zaten kapmış. Bu da, yeni bir bağlantının o port üzerinde kurulmasına engel olur. Bu hata genellikle şu mesajla karşımıza çıkar:
Error: listen EADDRINUSE :::3000
Evet, doğru okudunuz! 3000 portunu kullanmak isteyen uygulamanız, başka bir uygulama tarafından kullanılıyor.
Bu Hata Neden Olur?
Port kullanımı, web sunucuları için oldukça yaygın bir durumdur. Eğer bir port, bir uygulama tarafından açılmışsa, o port üzerinde başka bir uygulamanın çalışması engellenir. Node.js gibi sunucu tabanlı uygulamalar da belirli bir port üzerinden çalışırlar ve bu port başka bir uygulama tarafından kullanılıyorsa, "EADDRINUSE" hatası ile karşılaşırsınız. Genellikle bu sorun, bir önceki uygulamanın düzgün kapanmaması nedeniyle ya da portun yanlışlıkla açık bırakılması nedeniyle oluşur.
EADDRINUSE Hatasını Çözmek İçin Ne Yapmalıyız?
Bu hatanın birkaç farklı çözüm yolu vardır. Hadi bunları adım adım inceleyelim:
1. Kapanmamış Uygulamaları Kapatın
İlk adım olarak, bilgisayarınızda çalışan tüm Node.js uygulamalarını kontrol edin. Eğer daha önce başlattığınız bir uygulama arka planda kalmışsa ve portu kullanıyorsa, onu kapatmanız gerekebilir.
Linux veya macOS kullanıcıları için, şu komutu terminal üzerinden çalıştırabilirsiniz:
lsof -i :3000
Bu komut, 3000 numaralı portu kullanan süreci gösterecektir. Sonrasında, süreci sonlandırmak için şu komutu kullanabilirsiniz:
kill -9 [PID]
Windows kullanıcıları ise şu komutu kullanabilirler:
netstat -ano | findstr :3000
Ve ardından:
taskkill /PID [PID] /F
Bu adımla, portu kullanan süreci öldürebilir ve portu serbest bırakabilirsiniz.
2. Farklı Bir Port Kullanın
Eğer portu kullanan başka bir uygulama varsa ve onu durduramıyorsanız, farklı bir port numarası kullanarak bu sorunu aşabilirsiniz. Uygulamanızda port numarasını değiştirmek oldukça kolaydır.
Örneğin, aşağıdaki gibi bir değişiklik yapabilirsiniz:
const express = require('express');
const app = express();
const port = 4000; // Farklı bir port numarası
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
Bu şekilde, 4000 numaralı portu kullanarak hatadan kurtulabilirsiniz.
3. Uygulama Kodunuzu Kontrol Edin
Eğer hata sürekli olarak ortaya çıkıyorsa, uygulamanızın düzgün kapanmadığından şüphelenebilirsiniz. Özellikle, uygulama çalıştırıldıktan sonra düzgün bir şekilde kapanmıyor olabilir. Bu gibi durumlarda, kodunuzun düzgün bir şekilde sonlandığından emin olun.
Node.js uygulamanızda `process.on('SIGINT', ...)` veya `server.close()` gibi komutlarla sunucuyu düzgün bir şekilde kapatabilirsiniz. Bu, portun düzgün bir şekilde serbest bırakılmasına yardımcı olur.
process.on('SIGINT', () => {
server.close(() => {
console.log('Sunucu kapatıldı');
process.exit(0);
});
});
Bu, uygulamanızın düzgün bir şekilde kapanmasını sağlar ve portun serbest bırakılmasına olanak tanır.
Sonuç
Node.js'teki "EADDRINUSE" hatası, genellikle portların başka bir uygulama tarafından kullanılmasından kaynaklanır. Ancak çözümü oldukça basittir. Çoğu zaman, portu kullanan süreci sonlandırmak veya farklı bir port numarası kullanmak yeterli olacaktır. Eğer bu hatayı sıkça alıyorsanız, uygulamanızın düzgün kapanıp kapanmadığını kontrol etmeniz de faydalı olabilir.
Unutmayın, Node.js ile çalışırken karşılaştığınız bu gibi hatalar, sadece yazılım geliştirme sürecinin bir parçasıdır. Bu tür hatalarla karşılaşmak, size daha fazla bilgi ve deneyim kazandıracak ve geliştirici olarak sizi daha güçlü bir konuma getirecektir.