Как да разрешите „Грешка: слушайте EADDRINUSE: адресът вече се използва“?

Kak Da Razresite Greska Slusajte Eaddrinuse Adres T Vece Se Izpolzva



Node.js е среда за изпълнение, която позволява код, написан на езика на JavaScript, да се изпълнява през уеб страницата или локалния сървър. Това е еднонишкова среда и има асинхронен характер. Той предлага различни вградени и външни модули, които могат да се използват за извършване на различни операции като изпращане на HTTP заявки през сървъра. Докато взаимодействате с различни локални сървъри, има шанс да получите множество грешки, които се разрешават, като следвате конкретни ръководства.

Това ръководство обяснява възможните корекции за „слушайте EADDRINUSE: адресът вече се използва“, като обхваща разделите по-долу:

Как да разрешите „Грешка: слушайте EADDRINUSE: адресът вече се използва“?

Грешка: слушане EADDRINUSE: адресът вече се използва ” възниква, когато повече от едно приложение или задача се опитват да получат достъп до един и същи порт. Тази грешка може да бъде повдигната по време на фазите на тестване или разработка. Например, горепосочената грешка ще бъде генерирана за по-добро разбиране:







конст expressObj = изискват ( 'експресен' )
конст demoApp = expressObj ( )
demoApp. получавам ( '/' , ( req, res ) => {
рез. json ( {
име : „Статия за Linux за CORS“ ,
език : „Node.js“ ,
приложение : 'corsApp' ,
произход : „Кръстосан произход“ ,
междинен софтуер : „CORS“
} )
} )
demoApp. слушам ( 8080 , ( ) => {
конзола. дневник ( `Сървърът стартира „http://localhost:8080/“ ` )
} )
demoApp. слушам ( 8080 , ( ) => {
конзола. дневник ( `Сървърът стартира „http://localhost:8080/“ ` )
} )

Горният кодов фрагмент работи по следния начин:



  • Първо импортирайте „ експресен ” модул и съхранява неговия обект в нова променлива “ expressObj ”. Използвайте тази променлива като конструктор, за да създадете ново експресно приложение с име ' demoApp ”.
  • След това създайте GET заявка, като използвате „ получи() ” и задайте началната страница като основен манипулатор чрез предаване на „ / ” като първи параметър. Вторият параметър е анонимна функция за обратно извикване, която изпраща „ JSON ” данни като отговор чрез използването на „ json() ” метод.
  • След това накарайте това приложение да се изпълни през същия номер на порт на „ 8080 ' два пъти. Това изпълнение на един и същ порт два пъти генерира споменатата грешка.

Генерираният изход след компилирането на горния код показва появата на грешка „Грешка: слушайте EADDRINUSE: адресът вече се използва“:







Има основно две решения за разрешаване на грешката, възникнала в горния изход, а именно промяна на номерата на портовете или спиране на един от изпълняваните процеси. Но има и множество други корекции, които косвено решават „ Грешка: слушане EADDRINUSE: адресът вече се използва ” грешка. Тези решения заедно с практически демонстрации са посочени по-долу:

Решение 1: Стартирайте процеси на различни портове

Най-препоръчителното решение за споменатата грешка е да се идентифицират номерата на портовете, на които работят и двете услуги, като в нашия случай това е „ 8080 ”. След това изберете произволно една услуга и променете нейния номер на порт, за да накарате услугите да слушат на localhost, но с различни номера на портове. Нашият код след обсъжданата модификация е показан по-долу:



конст expressObj = изискват ( 'експресен' )
конст demoApp = expressObj ( )
demoApp. получавам ( '/' , ( req, res ) => {
рез. json ( {
име : „Статия за Linux за CORS“ ,
език : „Node.js“ ,
приложение : 'corsApp' ,
произход : „Кръстосан произход“ ,
междинен софтуер : „CORS“
} )
} )
demoApp. слушам ( 8080 , ( ) => {
конзола. дневник ( `Сървърът стартира „http://localhost:8080/“ ` )
} )
demoApp. слушам ( 3000 , ( ) => {
конзола. дневник ( `Сървърът стартира „http://localhost:8080/“ ` )
} )

Резултатът, генериран след изпълнението на горния код, показва, че сега „ Грешка: слушане EADDRINUSE: адресът вече се използва ” проблемът е разрешен:

Решение 2: Спиране на процесите, изпълнявани на един и същи порт

Друг начин за разрешаване на грешката „слушайте EADDRINUSE: адресът вече се използва“ е чрез спиране на процесите, изпълнявани на конкретния порт, който вече се използва. Това ще направи порта неактивен, който може да бъде достъпен от разработчика за изпълнение на определени задачи. Този процес на спиране се извършва с помощта на външен модул, наречен „ kill-port ”.

Например всички процеси, които се изпълняват на посочения номер на порт ' 8080 ” ще бъдат убити с помощта на „ kill-port ” модул. Има два начина за използване на модула „kill-port“ и двата подхода са описани по-долу:

Метод 1: Използвайте модул „kill-port“ след инсталиране

kill-port ” е външен модул на трета страна и за да използвате този модул в проекта node.js. Този модул трябва първо да бъде изтеглен чрез изпълнение на командата по-долу:

npm инсталирайте kill - порт - ж

Фигурата по-долу показва завършването на инсталацията за „ kill-port ” променлива:

След инсталирането потребителят може да убие услуги за необходимия номер на порт. В нашия случай услугите на номер на порт “ 8080 ” ще бъдат убити чрез посочената по-долу команда:

убивам - порт -- порт 8080

Резултатът по-долу потвърждава, че всички услуги за порт „ 8080 ” са убити:

Метод 2: Използвайте модул „kill-port“ без инсталация

kill-port ” може да се използва без преминаване през процеса на инсталиране чрез използване на „ npx ” пускач на пакети. Например „ kill-port ” модулът се използва за убиване на определени два порта с помощта на командата за изпълнение на пакети „npx”, посочена по-долу:

npx убиване - порт 8080 9000

Изходът по-долу показва, че услугите за определени портове „ 9000 ' и ' 8080 ” са убити:

Бонус съвет: Деинсталиране на модула „kill-port“.

За да деинсталирате „ kill-port ” модул глобално от системата изпълнете посочената по-долу команда:

npm деинсталиране kill - порт - ж

Решение 3: Прекратете услугите Node.js в Windows

Ако „Грешка: слушайте EADDRINUSE: адресът вече се използва“ все още продължава, убийте всички работещи „ node.js ” услуги, използващи GUI или CLI подход.

Използване на CLI подход

Натисни ' прозорец ”, за да отворите лентата за търсене и въведете „ CMD ” в полето за търсене от генерираните резултати. След това изберете „ Командния ред ” и натиснете „ Изпълни като администратор ” бутон:

Като изберете опцията, ще се появи нов прозорец на Control Prompt, за да убиете текущо работещите „node.js“ услуги във фонов режим, изпълнете командата по-долу:

taskkill / Е / IM възел. екз

Генерираният изход показва, че услугите „node.js“ са прекратени:

Използване на GUI подход

За да убиете работещите node.js услуги от системата, отворете „ Диспечер на задачите ”, като натиснете „ Ctrl + Shift + Esc ” ключове незабавно. След като отворите „Диспечер на задачите“, преминете към „ Подробности ”, изберете „ node.exe ” услуга и натиснете „ Последна задача ” разположен в долния десен ъгъл, както е показано по-долу:

Това е всичко за разрешаването на „Грешка: слушайте EADDRINUSE: адресът вече се използва“ в Node.js.

Заключение

„Грешка: слушайте EADDRINUSE: адресът вече се използва“ възниква, когато повече от една услуга се опита да използва един порт едновременно. За да го разреши, потребителят трябва да се опита да използва различен номер на порт или да убие услугите, които вече работят на посочения номер на порт, като използва „ kill-port ” модул. Ако грешката все още не е разрешена, убийте всички работещи ' node.js ” от диспечера на задачите и рестартирайте приложението си. Това ръководство илюстрира възможните решения за разрешаване на проблема „Грешка: слушайте EADDRINUSE: адресът вече се използва“.