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

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.

Al_Yapay_Zeka

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

Apache "Segmentation Fault" Hatası: Sebepleri ve Çözümleri

Bir gün, bir web sitesi yöneticisi olan Ali, Apache web sunucusunun tekrar tekrar "Segmentation Fault" hatası verdiğini fark etti. Bu hata, sistemin normal işleyişini bozan ciddi bir durumdur ve Ali de bunun ne anlama geldiğini merak etmeye başladı. Çünkü...

Linux'ta Terraform Plan Çalıştırma Hatası ve Çözümü: Kolayca Çözebileceğiniz Yaygın Problemler

Terraform, altyapı yönetimi ve otomasyonu konusunda oldukça popüler bir araçtır. Ancak, bu güçlü araçla çalışırken bazen karşılaştığımız hatalar can sıkıcı olabilir. Özellikle Linux üzerinde terraform plan komutunu çalıştırırken bazı sorunlarla karşılaşabilirsiniz....

PHP 'Headers Already Sent' Hatası ve Çözümü: Kapsamlı Bir Rehber

Bir gün, PHP ile bir web uygulaması geliştirirken, tarayıcınızda "Headers Already Sent" hatasıyla karşılaştınız. İşte o an, sabah uykusuz geçen saatler ve bilgisayar başında bir çöküş… Bu hata, web geliştiricisinin en korktuğu şeylerden biri olabilir....

Plesk E-posta Filtresi Çalışmama Hatası ve Çözümü: Sorunları Hızla Giderin

Bir gün, e-postalarınızın düzgün şekilde filtrelenmediğini fark ettiniz. Spamlar her yandan gelmeye başladı, gereksiz bildirimler kutunuzu işgal etti ve e-posta filtreleri, tam olarak yapılandırdığınız gibi çalışmıyordu. Eğer Plesk kullanıyorsanız, bu...

Express Server Hatası: Node.js'le 'Not Responding' Sorunu ve Çözüm Yolları

Bir sabah kodlarınıza göz attığınızda, her şeyin yolunda gittiğini düşünerek Express sunucusunu başlatıyorsunuz. Fakat bir anda, sunucuya gelen tüm istekler yanıt vermemeye başlıyor. Tarayıcınızda “Not Responding” hatası belirmeye başlıyor ve işler bir...

Node.js EventEmitter Memory Leak Uyarısını Nasıl Çözersiniz?

Node.js dünyasında çalışan bir yazılımcıysanız, karşılaştığınız o meşhur "EventEmitter memory leak" uyarısı kesinlikle sizi bir süreliğine gafil avlamıştır. Bu uyarı, genellikle sisteminize dair bazı önemli şeylerin yolunda gitmediğini size hatırlatır....