'Hata: EADDRINUSE'yi dinle: adres zaten kullanımda' sorununu nasıl çözebilirim?

Hata Eaddrinuse Yi Dinle Adres Zaten Kullanimda Sorununu Nasil Cozebilirim



Node.js, JavaScript dilinde yazılan kodun web sayfası veya yerel sunucu üzerinden yürütülmesine olanak tanıyan bir çalışma zamanı ortamıdır. Tek iş parçacıklı bir ortamdır ve eşzamansız bir yapıya sahiptir. Sunucu üzerinden HTTP istekleri göndermek gibi çeşitli işlemleri gerçekleştirmek için kullanılabilecek çeşitli yerleşik ve harici modüller sunar. Çeşitli yerel sunucularla etkileşimde bulunurken, belirli kılavuzlar izlenerek çözülen birden fazla hata alma şansı vardır.

Bu kılavuz, aşağıdaki bölümleri kapsayarak 'EADDRINUSE'yi dinle: zaten kullanımda olan adres' için olası düzeltmeleri açıklamaktadır:

'Hata: EADDRINUSE'yi dinle: adres zaten kullanımda' sorununu nasıl çözebilirim?

Hata: EADDRINUSE'yi dinle: adres zaten kullanımda birden fazla uygulama veya görev aynı bağlantı noktasına erişmeye çalıştığında ortaya çıkar. Bu hata test veya geliştirme aşamalarında ortaya çıkabilir. Örneğin, daha iyi anlaşılması için yukarıda belirtilen hata oluşturulacak:







yapı ekspresObj = gerekmek ( 'ifade etmek' )
yapı demoUygulama = ekspresObj ( )
demoApp. elde etmek ( '/' , ( talep, res ) => {
res. json ( {
isim : 'CORS ile ilgili Linux Makalesi' ,
dil : 'Node.js' ,
başvuru : 'corsApp' ,
Menşei : 'Çapraz Köken' ,
ara katman yazılımı : 'CORS'
} )
} )
demoApp. Dinlemek ( 8080 , ( ) => {
konsol. kayıt ( `Sunucu şu tarihte başladı: 'http://localhost:8080/' ' )
} )
demoApp. Dinlemek ( 8080 , ( ) => {
konsol. kayıt ( `Sunucu şu tarihte başladı: 'http://localhost:8080/' ' )
} )

Yukarıdaki kod parçacığı şu şekilde çalışır:



  • İlk önce “ ifade etmek ' modülünü açın ve nesnesini yeni bir değişkende saklayın ' ekspresObj ”. ' adlı yeni bir hızlı uygulama oluşturmak için bu değişkeni yapıcı olarak kullanın. demoUygulama ”.
  • Daha sonra “” komutunu kullanarak bir GET isteği oluşturun. elde etmek() ” yöntemini kullanın ve “ ileterek ana sayfayı kök işleyici olarak ayarlayın. / ” ilk parametre olarak. İkinci parametre, '' gönderen anonim bir geri arama işlevidir. JSON ' verilerinin kullanılmasıyla yanıt olarak ' json() ' yöntem.
  • Bundan sonra, bu uygulamanın aynı bağlantı noktası numarası üzerinden yürütülmesini sağlayın: 8080 ' iki kere. Aynı bağlantı noktasının bu şekilde iki kez çalıştırılması söz konusu hatayı oluşturur.

Yukarıdaki kodun derlenmesinden sonra oluşturulan çıktı, 'Hata: EADDRINUSE'yi dinle: adres zaten kullanımda' hatasının oluştuğunu gösterir:







Yukarıdaki çıktıda meydana gelen, port numaralarını değiştirmek veya çalışan işlemlerden birini durdurmak şeklindeki hatayı çözmek için temel olarak iki çözüm vardır. Ancak '' sorununu dolaylı olarak çözen başka birçok düzeltme de var. Hata: EADDRINUSE'yi dinle: adres zaten kullanımda ' hata. Bu çözümler pratik gösterimlerle birlikte aşağıda belirtilmiştir:

1. Çözüm: İşlemleri Farklı Bağlantı Noktalarında Çalıştırın

Bahsi geçen hatanın en çok önerilen çözümü, bizim durumumuzda olduğu gibi her iki servisin de çalıştığı port numaralarını belirlemektir “ 8080 ”. Ardından, rastgele bir hizmet seçin ve hizmetlerin localhost'ta farklı bağlantı noktası numaralarıyla dinlenmesini sağlamak için bağlantı noktası numarasını değiştirin. Tartışılan değişiklikten sonraki kodumuz aşağıda gösterilmiştir:



yapı ekspresObj = gerekmek ( 'ifade etmek' )
yapı demoUygulama = ekspresObj ( )
demoApp. elde etmek ( '/' , ( talep, res ) => {
res. json ( {
isim : 'CORS ile ilgili Linux Makalesi' ,
dil : 'Node.js' ,
başvuru : 'corsApp' ,
Menşei : 'Çapraz Köken' ,
ara katman yazılımı : 'CORS'
} )
} )
demoApp. Dinlemek ( 8080 , ( ) => {
konsol. kayıt ( `Sunucu şu tarihte başladı: 'http://localhost:8080/' ' )
} )
demoApp. Dinlemek ( 3000 , ( ) => {
konsol. kayıt ( `Sunucu şu tarihte başladı: 'http://localhost:8080/' ' )
} )

Yukarıdaki kodun çalıştırılmasından sonra oluşturulan çıktı, artık ' Hata: EADDRINUSE'yi dinle: adres zaten kullanımda ' sorunu çözüldü:

2. Çözüm: Aynı Bağlantı Noktasında Çalışan İşlemleri Durdurma

“EADDRINUSE'yi dinle: zaten kullanımda olan adres” hatasını çözmenin bir başka yolu, halihazırda kullanımda olan belirli bağlantı noktasında çalışan işlemleri durdurmaktır. Bu, geliştiricinin belirtilen görevleri gerçekleştirmek için erişebileceği bağlantı noktasını boşta bırakacaktır. Bu durdurma işlemi “adlı harici bir modül yardımıyla yapılır. öldürme limanı ”.

Örneğin belirtilen port numarasında çalışan tüm işlemler “ 8080 ' kullanılarak öldürülecek öldürme limanı ” modülü. Kill-port modülünü kullanmanın iki yolu vardır ve bu yaklaşımların her ikisi de aşağıda belirtilmiştir:

Yöntem 1: Kurulumdan Sonra “kill-port” Modülünü Kullanın

öldürme limanı ” modülü üçüncü taraf harici bir modüldür ve bu modülü node.js projesi içerisinde kullanabilmek için. Bu modülün öncelikle aşağıda belirtilen komutu çalıştırarak indirilmesi gerekir:

npm kurulum kill - liman - G

Aşağıdaki şekil ““ için kurulumun tamamlandığını göstermektedir. öldürme limanı ” değişken:

Kurulumdan sonra kullanıcı gerekli port numarası için hizmetleri sonlandırabilir. Bizim durumumuzda port numarasının hizmetleri “ 8080 ” aşağıda belirtilen komutla öldürülecek:

öldürmek - liman -- liman 8080

Aşağıdaki çıktı, bağlantı noktası için tüm hizmetlerin ' 8080 ” öldürüldü:

Yöntem 2: Kurulum Yapmadan “kill-port” Modülünü Kullanın

öldürme limanı “ modülü kurulum işlemine geçmeden “” kullanılarak kullanılabilir. npx ” paket çalıştırıcısı. Örneğin, “ öldürme limanı ” modülü, aşağıda belirtilen “npx” package runner komutunu kullanarak belirtilen iki bağlantı noktasını öldürmek için kullanılıyor:

npx'i öldür - liman 8080 9000

Aşağıdaki çıktı, belirtilen bağlantı noktalarına yönelik hizmetlerin ' 9000 ' Ve ' 8080 ” öldürüldü:

Bonus İpucu: “kill-port” Modülünün Kaldırılması

“Kaldırmak için öldürme limanı ” modülü sistemden global olarak aşağıda belirtilen komutu yürütün:

npm kill'i kaldır - liman - G

3. Çözüm: Windows'ta Node.js Hizmetlerini Sonlandırın

'Hata: EADDRINUSE'yi dinle: adres zaten kullanımda' hala devam ediyorsa, çalışan tüm 'ları sonlandırın' node.js ” hizmetleri GUI veya CLI yaklaşımını kullanarak.

CLI Yaklaşımını Kullanma

“ tuşuna basın Pencere Arama çubuğunu açmak ve “” girmek için ” düğmesine basın. CMD Oluşturulan sonuçlardan arama kutusunun içindeki ”. Ardından “ Komut istemi ” uygulamasına gidin ve “ Yönetici olarak çalıştır ' düğme:

Bu seçeneği seçtiğinizde, arka planda çalışmakta olan “node.js” hizmetlerini sonlandırmak için yeni bir Kontrol İstemi penceresi görünecektir, aşağıdaki komutu uygulayın:

görev öldürmek / F / IM düğümü. exe

Oluşturulan çıktı “node.js” hizmetlerinin sonlandırıldığını gösteriyor:

GUI Yaklaşımını Kullanmak

Çalışan node.js hizmetlerini sistemden sonlandırmak için “ Görev Yöneticisi ' tuşuna basarak Ctrl + Üst Karakter + Esc ” tuşlarına hemen basın. “Görev Yöneticisi”ni açtıktan sonra “ Detaylar ” tipini seçin, “ düğüm.exe ” hizmetine basın ve “ Görevi bitir ” düğmesi aşağıda gösterildiği gibi sağ altta bulunur:

Bu tamamen Node.js'deki 'Hata: EADDRINUSE'yi dinle: zaten kullanımda olan adres' sorununu çözmekle ilgilidir.

Çözüm

Birden fazla hizmet aynı anda tek bir bağlantı noktasını kullanmaya çalıştığında 'Hata: EADDRINUSE'yi dinle: adres zaten kullanımda' ortaya çıkar. Bu sorunu çözmek için kullanıcı farklı bir port numarası kullanmaya çalışmalı veya belirtilen port numarasında halihazırda çalışan hizmetleri '' kullanarak sonlandırmalıdır. öldürme limanı ” modülü. Hata hala çözülmediyse, çalışan tüm işlemleri sonlandırın ' node.js ” hizmetlerini görev yöneticisinden seçin ve uygulamanızı yeniden başlatın. Bu kılavuz, 'Hata: EADDRINUSE'yi dinle: zaten kullanımda olan adres' sorununu çözmek için olası çözümleri göstermektedir.