Node.js EADDRINUSE Hatası ve Çözümü: Kapanan Portlarla Yüzleşmek

Node.js geliştirme sürecinde sıkça karşılaşılan EADDRINUSE hatası hakkında detaylı bir çözüm rehberi. Bu yazıda, port çakışmalarını nasıl çözebileceğinizi ve hata yönetimini nasıl iyileştirebileceğinizi öğreneceksiniz.

BFS

Node.js EADDRINUSE Hatası Nedir?



Node.js ile çalışan geliştiricilerin en sık karşılaştığı hatalardan birisi, "EADDRINUSE" hatasıdır. Bu hata, genellikle port numarasının başka bir uygulama tarafından zaten kullanıldığında ortaya çıkar. Amaç, basitçe bir sunucu başlatmak ya da bir API çalıştırmakken, karşınıza bu hatayı almanız can sıkıcı olabilir.

EADDRINUSE, İngilizce'den çevrildiğinde "Adres Kullanımda" anlamına gelir. Yani Node.js, bağlanmaya çalıştığınız portun zaten bir başka uygulama tarafından kullanıldığını bildiriyor. Bu da, bağlantı kurmaya çalıştığınız portu başlatmanın imkansız olduğu anlamına gelir.

EADDRINUSE Hatası ile Nasıl Başa Çıkılır?



İşte bu hatayla karşılaştığınızda ne yapmanız gerektiğini adım adım açıklayalım.

1. Portu Kapatmak

İlk adım, hataya neden olan portu tespit etmektir. Eğer terminal veya komut satırında çalışıyorsanız, bu portun hangi uygulama tarafından kullanıldığını bulmak için aşağıdaki komutları kullanabilirsiniz.

*Linux ve macOS için:*

lsof -i :PORT_NUMARASI


Bu komut, belirtilen portu kullanan işlemi (PID) gösterecektir. Sonrasında, bu işlemi sonlandırmak için aşağıdaki komutu kullanabilirsiniz:

kill -9 PID


Windows için ise, şu komutu kullanabilirsiniz:

netstat -ano | findstr :PORT_NUMARASI


Eğer ilgili PID'yi bulduysanız, bu işlemi Task Manager üzerinden sonlandırabilirsiniz.

2. Node.js Uygulamanızda Farklı Port Numarası Kullanın

Eğer bir portun kapanması size pratik bir çözüm sunmuyorsa, uygulamanızda farklı bir port numarası belirleyebilirsiniz. Bunun için, Node.js sunucunuzu başlatırken port numarasını değiştirebilirsiniz. Örneğin, şu şekilde bir değişiklik yapabilirsiniz:


// app.js veya server.js dosyanızda:
const express = require('express');
const app = express();

const port = process.env.PORT || 3001; // Burada farklı bir port kullanıyoruz

app.listen(port, () => {
    console.log(`Server ${port} portunda çalışıyor!`);
});


Bu şekilde, port 3000'deki çakışmadan kaçınarak yeni bir port numarasına yönlendirme yapabilirsiniz.

Port Çakışmalarını Önlemek İçin İpuçları



3. Portları Dinamik Olarak Kullanmak

Geliştirme aşamasında sıklıkla port çakışmaları ile karşılaşırsınız. Bunun önüne geçmek için portları dinamik şekilde belirlemek faydalı olabilir. Örneğin, bir port numarası bulduğunuzda, eğer bu port doluysa, bir diğer portu denemek için yazılım geliştirebilirsiniz. İşte böyle bir çözüm için basit bir kod:


const express = require('express');
const app = express();
const PORT_START = 3000;

let currentPort = PORT_START;

function findAvailablePort(port) {
  return new Promise((resolve, reject) => {
    const server = app.listen(port, () => {
      server.close();
      resolve(port);
    }).on('error', () => {
      if (port < 3010) {  // Yalnızca 3000-3010 arasında denemek
        return findAvailablePort(port + 1);
      }
      reject('Port bulunamadı');
    });
  });
}

findAvailablePort(currentPort)
  .then(port => {
    app.listen(port, () => {
      console.log(`Server ${port} portunda çalışıyor!`);
    });
  })
  .catch(err => {
    console.error(err);
  });


Bu yöntemle, uygulamanız otomatik olarak kullanılabilir bir port bulur.

EADDRINUSE Hatasının Önüne Geçmek İçin İyi Alışkanlıklar



4. Uygulamanızda Hata Yönetimini İyi Yapın

Birçok geliştirici, port çakışması gibi durumlarla karşılaştığında sadece hatayı göz ardı edebiliyor. Ancak, bunu iyi bir hata yönetimiyle ele almak önemlidir. Sunucunuzun başlatılmaya çalışıldığı her durumda bir hata olursa, bu hatayı düzgün şekilde yakalamalı ve anlamlı bir hata mesajı göstermelisiniz.

İşte basit bir örnek:


const port = 3000;

app.listen(port, (err) => {
  if (err) {
    console.error(`Port ${port} kullanılamıyor. Lütfen başka bir port seçin.`);
  } else {
    console.log(`Sunucu ${port} portunda başarıyla çalışıyor.`);
  }
});


5. Hangi Portu Kullandığınızı Takip Edin

Projelerinizde hangi port numarasını kullandığınızı doğru şekilde takip etmek de büyük önem taşır. İyi bir belge düzeni ve proje içindeki portların açıkça tanımlanması, gelecekte oluşabilecek port çakışmalarını engellemeye yardımcı olur.

Sonuç



Node.js ile geliştirme yaparken, EADDRINUSE hatası kaçınılmaz bir sorun olabilir. Ancak yukarıda önerdiğimiz yöntemler ve en iyi uygulamalar ile bu hatayı etkili bir şekilde çözebilirsiniz. Hem geliştirme hem de üretim ortamlarında port çakışmalarını önlemek için dikkatli olmanızda fayda var.

Portları yönetmek ve düzgün hata yönetimi yapmak, Node.js projelerinizin sorunsuz bir şekilde çalışmasını sağlar. Artık EADDRINUSE hatası sizi korkutmasın, çünkü çözüm her zaman elinizin altında!

İlgili Yazılar

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

Modern Yazılım Geliştirme Süreçlerinde Yapay Zeka ve Otomasyonun Rolü: 2025’te Yeni Başlangıçlar

Yazılım geliştirme dünyası hızla evriliyor. 2025 yılına adım attığımızda, bu süreçte yapay zeka ve otomasyonun rolü hiç olmadığı kadar önemli hale geldi. Geçmişte yazılım geliştirme yalnızca kod yazmak ve sistemleri test etmekle sınırlıydı. Ancak bugünün...

Yazılım Geliştiriciler İçin Verimli Çalışma Alanı Oluşturmanın İpuçları: En İyi Araçlar ve Yöntemler

Verimli Bir Çalışma Alanı Neden Önemlidir?Yazılım geliştirici olmanın zorluklarından biri de sürekli odaklanmış ve üretken olabilmektir. Bir geliştirici olarak, işlerinizin çoğunu bilgisayar başında geçirirsiniz ve bu süre zarfında verimli bir çalışma...

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...