Hoe “Fout: luister EADDRINUSE: adres al in gebruik” op te lossen?

Hoe Fout Luister Eaddrinuse Adres Al In Gebruik Op Te Lossen



Node.js is een runtime-omgeving waarmee code die in JavaScript is geschreven, via de webpagina of lokale server kan worden uitgevoerd. Het is een single-threaded omgeving en heeft een asynchrone aard. Het biedt verschillende ingebouwde en externe modules die kunnen worden gebruikt om verschillende bewerkingen uit te voeren, zoals het verzenden van HTTP-verzoeken via de server. Tijdens de interactie met verschillende lokale servers bestaat de kans dat u meerdere fouten krijgt die worden opgelost door specifieke handleidingen te volgen.

In deze handleiding worden de mogelijke oplossingen voor “luister EADDRINUSE: adres al in gebruik” uitgelegd door onderstaande secties te behandelen:

Hoe “Fout: luister EADDRINUSE: adres al in gebruik” op te lossen?

De ' Fout: luister EADDRINUSE: adres al in gebruik ” ontstaat wanneer meer dan één applicatie of taak toegang probeert te krijgen tot dezelfde poort. Deze fout kan optreden tijdens de test- of ontwikkelingsfase. De bovengenoemde fout wordt bijvoorbeeld gegenereerd voor een beter begrip:







const expressObj = vereisen ( 'nadrukkelijk' )
const demoApp = expressObj ( )
demoApp. krijgen ( '/' , ( verzoek, res ) => {
res. json ( {
naam : 'Linuxhint-artikel over CORS' ,
taal : 'Node.js' ,
sollicitatie : 'corsApp' ,
oorsprong : 'Kruisoorsprong' ,
middelware : 'CORS'
} )
} )
demoApp. luisteren ( 8080 , ( ) => {
troosten. loggen ( 'Server is gestart 'http://localhost:8080/' ` )
} )
demoApp. luisteren ( 8080 , ( ) => {
troosten. loggen ( 'Server is gestart 'http://localhost:8080/' ` )
} )

Het bovenstaande codefragment werkt als volgt:



  • Importeer eerst de “ nadrukkelijk ” module en sla het object op in een nieuwe variabele “ expressObj ”. Gebruik deze variabele als constructor om een ​​nieuwe express-applicatie te maken met de naam “ demoApp ”.
  • Maak vervolgens een GET-verzoek met behulp van de “ krijgen() 'methode en stel de startpagina in als root-handler door ' / ” als de eerste parameter. De tweede parameter is een anonieme callback-functie die “ JSON ”-gegevens als reactie op het gebruik van de “ json() methode.
  • Laat die app daarna uitvoeren via hetzelfde poortnummer van “ 8080 ' twee maal. Deze twee keer uitvoeren van dezelfde poort genereert de genoemde fout.

De gegenereerde uitvoer na het compileren van de bovenstaande code toont het optreden van een fout “Error: luister EADDRINUSE: adres is al in gebruik”:







Er zijn hoofdzakelijk twee oplossingen om de fout op te lossen die in de bovenstaande uitvoer is opgetreden, namelijk het wijzigen van de poortnummers of het stoppen van een van de actieve processen. Maar er zijn ook meerdere andere oplossingen die indirect het “ Fout: luister EADDRINUSE: adres al in gebruik ' fout. Deze oplossingen samen met praktische demonstraties worden hieronder vermeld:

Oplossing 1: voer processen uit op verschillende poorten

De meest aanbevolen oplossing voor de genoemde fout is het identificeren van de poortnummers waarop beide services draaien, zoals in ons geval “ 8080 ”. Kies vervolgens willekeurig één service en wijzig het poortnummer ervan, zodat de services op localhost luisteren, maar met verschillende poortnummers. Onze code na de besproken wijziging wordt hieronder weergegeven:



const expressObj = vereisen ( 'nadrukkelijk' )
const demoApp = expressObj ( )
demoApp. krijgen ( '/' , ( verzoek, res ) => {
res. json ( {
naam : 'Linuxhint-artikel over CORS' ,
taal : 'Node.js' ,
sollicitatie : 'corsApp' ,
oorsprong : 'Kruisoorsprong' ,
middelware : 'CORS'
} )
} )
demoApp. luisteren ( 8080 , ( ) => {
troosten. loggen ( 'Server is gestart 'http://localhost:8080/' ` )
} )
demoApp. luisteren ( 3000 , ( ) => {
troosten. loggen ( 'Server is gestart 'http://localhost:8080/' ` )
} )

De uitvoer die wordt gegenereerd na het uitvoeren van de bovenstaande code laat zien dat nu de “ Fout: luister EADDRINUSE: adres al in gebruik Het probleem is opgelost:

Oplossing 2: stop de processen die op dezelfde poort draaien

Een andere manier om de fout “luister EADDRINUSE: adres al in gebruik” op te lossen, is door de processen te stoppen die worden uitgevoerd op de specifieke poort die al in gebruik is. Hierdoor wordt de poort inactief, waartoe de ontwikkelaar toegang heeft om specifieke taken uit te voeren. Dit stopproces wordt uitgevoerd met behulp van een externe module genaamd “ kill-poort ”.

Alle processen die op het opgegeven poortnummer draaien, worden bijvoorbeeld “ 8080 ” zullen worden gedood met behulp van de “ kill-poort ”module. Er zijn twee manieren om de “kill-port”-module te gebruiken en beide benaderingen worden hieronder vermeld:

Methode 1: Gebruik de “kill-port”-module na installatie

De ' kill-poort ”-module is een externe module van derden en om deze module te gebruiken binnen het node.js-project. Deze module moet eerst worden gedownload door het onderstaande commando uit te voeren:

npm installeren doden - haven - G

De onderstaande afbeelding toont de voltooiing van de installatie voor de “ kill-poort ”variabele:

Na de installatie kan de gebruiker services voor het vereiste poortnummer beëindigen. In ons geval zijn de diensten van poortnummer “ 8080 ”zullen worden gedood via het onderstaande commando:

doden - haven -- haven 8080

De onderstaande uitvoer bevestigt dat alle services voor port “ 8080 ' zijn vermoord:

Methode 2: Gebruik de “kill-port”-module zonder installatie

De ' kill-poort ”-module kan worden gebruikt zonder het installatieproces te doorlopen door gebruik te maken van een “ npx 'pakketloper. Bijvoorbeeld de “ kill-poort ”-module wordt gebruikt om gespecificeerde twee poorten te doden met behulp van de “npx” package runner-opdracht die hieronder wordt vermeld:

npx doden - haven 8080 9000

De onderstaande uitvoer laat zien dat de services voor gespecificeerde poorten “ 9000 ' En ' 8080 ' zijn vermoord:

Bonustip: verwijdering van de “kill-port”-module

Om de “ kill-poort ”-module globaal vanuit het systeem de onderstaande opdracht uitvoeren:

npm verwijderen doden - haven - G

Oplossing 3: beëindig de Node.js-services op Windows

Als de “Fout: luister EADDRINUSE: adres al in gebruik” nog steeds aanhoudt, beëindig dan alle actieve “ knooppunt.js ”-services met behulp van een GUI- of CLI-benadering.

CLI-aanpak gebruiken

Druk de ' Raam ' om de zoekbalk te openen en voer het ' CMD ' in het zoekvak, uit de gegenereerde resultaten. Selecteer vervolgens de “ Opdrachtprompt '-applicatie en druk op de ' Als administrator uitvoeren ' knop:

Door de optie te selecteren, verschijnt een nieuw venster met de controleprompt. Om de momenteel actieve “node.js” -services op de achtergrond te beëindigen, voert u de onderstaande opdracht uit:

taakmoord / F / IM-knooppunt. exe

Uit de gegenereerde uitvoer blijkt dat de “node.js” -services zijn beëindigd:

GUI-aanpak gebruiken

Om de actieve node.js-services van het systeem te beëindigen, opent u het bestand “ Taakbeheer ' door op de ' Ctrl+Shift+Esc ' toetsen onmiddellijk. Ga na het openen van 'Taakbeheer' naar het ' Details ' typt, selecteert u de ' knooppunt.exe '-service en druk op de' Einde taak '-knop rechtsonder, zoals hieronder weergegeven:

Dat gaat allemaal over het oplossen van de “Fout: luister EADDRINUSE: adres al in gebruik” in Node.js.

Conclusie

De “Fout: luister EADDRINUSE: adres al in gebruik” treedt op wanneer meer dan één service tegelijkertijd een enkele poort probeert te gebruiken. Om dit probleem op te lossen, moet de gebruiker proberen een ander poortnummer te gebruiken of de services die al op het opgegeven poortnummer draaien, beëindigen met behulp van de “ kill-poort ”module. Als de fout nog steeds niet is opgelost, stop dan alle actieve “ knooppunt.js '-services van Taakbeheer en start uw toepassing opnieuw. In deze handleiding worden de mogelijke oplossingen geïllustreerd om het probleem “Fout: luister EADDRINUSE: adres al in gebruik” op te lossen.