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?
- Oplossing 1: voer processen uit op verschillende poorten
- Oplossing 2: stop de processen die op dezelfde poort draaien
- Methode 1: Gebruik de “kill-port”-module na installatie
- Methode 2: Gebruik de “kill-port”-module zonder installatie
- Bonustip: verwijdering van de “kill-port”-module
- Oplossing 3: beëindig de Node.js-services op Windows
- CLI-aanpak gebruiken
- GUI-aanpak gebruiken
- Conclusie
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 - GDe 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 8080De 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 9000De 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. exeUit 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.