Node.js "EADDRINUSE" Hatası: Ne Anlama Gelir ve Nasıl Çözülür?

Node.js uygulamalarında karşılaşılan **EADDRINUSE** hatasını anlamak ve çözmek için adım adım rehber. Port çakışmaları ve hataları nasıl giderirsiniz, bu yazıda bulabilirsiniz.

BFS

Node.js ile çalışırken sıkça karşılaştığınız hatalardan biri de "EADDRINUSE" hatasıdır. Eğer Node.js ile bir uygulama geliştirdiyseniz, bu hata mesajı size tanıdık gelebilir:

`Error: listen EADDRINUSE: address already in use :::3000`

Hemen endişelenmeyin! Bu yazıda, bu hatanın ne olduğunu, neden ortaya çıktığını ve nasıl çözebileceğinizi adım adım anlatacağız. Hadi başlayalım.

EADDRINUSE Nedir?

"EADDRINUSE" hatası, Node.js'in belirli bir port üzerinde çalışmaya çalıştığında, bu portun başka bir işlem tarafından zaten kullanılıyor olduğunu belirten bir hata mesajıdır. Kısaca, aynı portu iki farklı işlem kullanmaya çalışıyor. Bu, genellikle geliştirme sırasında karşınıza çıkan bir durumdur.

Örneğin, uygulamanız 3000 numaralı portu kullanmaya çalışıyor fakat bu port başka bir program (belki de önceki bir Node.js uygulamanız) tarafından işgal edilmiştir. Sonuçta, "address already in use" hatası ile karşılaşırsınız.

Neden "EADDRINUSE" Hatası Alırım?

Bu hatayı almanızın birkaç yaygın nedeni vardır:

1. Bir Uygulama Portu Zaten Kullanıyor
Bir önceki uygulamanızın düzgün kapanmaması ya da aynı portu kullanan başka bir servis çalışıyor olabilir. Bu en yaygın sebeplerden biridir.

2. Port Çakışması
Birden fazla uygulama aynı anda aynı portu kullanmaya çalıştığında bu hata ortaya çıkar. Çakışmayı çözmek için portu değiştirmek gerekebilir.

3. İşlem Bittiğinde Port Açılmamış Olabilir
Node.js uygulamanız kapanmış olabilir, ancak port hâlâ kullanımda gibi görünüyor. Bu, bazen işletim sistemi seviyesinde gerçekleşen bir durumdur ve portu serbest bırakmak için bazı ek adımlar gerekebilir.

EADDRINUSE Hatasını Nasıl Çözerim?

Şimdi gelin, bu hatayı nasıl çözebileceğimize bakalım. Sizin için birkaç etkili yöntem hazırladım. Her birini deneyerek sorunuzu çözebilirsiniz.

# 1. Kapatılmayan Node.js Uygulamasını Bulmak

Bir port çakışması varsa, başka bir Node.js uygulaması hâlâ açık olabilir. Bu durumda, terminal üzerinden aktif portları kontrol etmeniz gerekir. Örneğin, port 3000’i kullanmaya çalışan işlemi bulmak için aşağıdaki komutu kullanabilirsiniz:


lsof -i :3000


Bu komut, portu kullanan işlemin ID’sini (PID) gösterecektir. Şimdi bu işlemi sonlandırmak için aşağıdaki komutu kullanabilirsiniz:


kill -9 PID


Burada `PID` kısmını, az önce bulduğunuz işlem ID’si ile değiştirin. Bu komut, o portu kullanan işlemi öldürecektir ve port serbest kalacaktır.

# 2. Portu Değiştirmek

Eğer portu başka bir uygulama kullanıyorsa, uygulamanızın port numarasını değiştirmek hızlı bir çözüm olabilir. Node.js uygulamanızda port numarasını şu şekilde değiştirebilirsiniz:


const express = require('express');
const app = express();
const PORT = process.env.PORT || 3001;  // Portu değiştirdik
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});


Burada `3001` numaralı portu kullandık. Portu değiştirmek, hatayı çözmek için basit ama etkili bir yöntemdir.

# 3. Portu Serbest Bırakmak

Bazen, uygulama kapalı olsa bile port serbest kalmaz. Bu durumda portu serbest bırakmak için aşağıdaki komutları kullanabilirsiniz:

Linux ve Mac için:


sudo kill -9 $(sudo lsof -t -i:3000)


Windows kullanıcıları için:


taskkill /F /PID 


Bu komutlar portu kullanan işlemi sonlandırarak, tekrar kullanılabilir hale getirecektir.

Sonuç

Node.js ile çalışırken karşılaşılan EADDRINUSE hatası, aslında oldukça yaygın bir sorundur ve çözümü de oldukça basittir. Port çakışmalarını gidermek, genellikle terminal komutları ve port numarası değişiklikleriyle halledilebilir. Bu yazıda, EADDRINUSE hatasıyla nasıl başa çıkabileceğinizi adım adım açıkladık. Umarım bu çözüm önerileri işinize yaramıştır.

Unutmayın, geliştirme sürecinde karşılaşılan her hata, bir öğrenme fırsatıdır. Hatalarla başa çıkarken, uygulamanızın daha sağlam bir hale geldiğini göreceksiniz. Başarılar!

İlgili Yazılar

Benzer konularda diğer yazılarımız

ASP.NET Core 500 Internal Server Error: Sebepleri ve Çözümleri

Bir web geliştiricisi olarak, karşılaştığınız en zorlayıcı hatalardan biri şüphesiz "500 Internal Server Error"dır. Bu hata, web uygulamanızda her şeyin yolunda gittiğini düşündüğünüz bir anda karşınıza çıkabilir ve tüm projeyi durdurabilir. Ancak merak...

Steam İstemcisinin Çökmesi: Sorunları Çözmek İçin Pratik Adımlar

Steam İstemcisinin Çökme Sorunu Neden Olur?Merhaba! Eğer sen de Steam istemcisinin birden bire çökmesiyle karşılaştıysan, yalnız değilsin. Bu, aslında pek çok Steam kullanıcısının karşılaştığı yaygın bir sorun. Steam, oyun dünyasının en popüler platformlarından...

PHP "Warning: Division by zero" Hatası: Sorun, Çözüm ve Dikkat Edilmesi Gerekenler

PHP dünyasında, programcıların karşılaştığı en yaygın hatalardan biri olan "Warning: Division by zero" hatasını ele alıyoruz. Bu hata, küçük bir bölücü hatasından dolayı uygulamanızın çalışmasını engelleyebilir. Hadi, bu hatayı daha yakından inceleyelim...