Ik werk al een paar weken met een node.js-project en het werkt uitstekend. Meestal gebruik ik npm start
om mijn app uit te voeren en te bekijken in een browser op localhost, poort 3000.
Vandaag kreeg ik de volgende foutmelding tijdens het gebruik van npm start:
Server started on port 3000
Port 3000 is already in use
Ik heb de bronmonitor gecontroleerd en er wordt geen ander proces uitgevoerd op poort 3000. Waarom krijg ik deze foutmelding?
In mijn app.js heb ik de volgende code om de poort in te stellen…is dit onjuist? Het werkte voorheen prima, dus ik weet niet zeker wat ik verkeerd doe.
// Set Port
app.set('port', (process.env.PORT || 3000));
app.listen(app.get('port'), function() {
console.log('Server started on port '+app.get('port'));
});
Bedankt voor de hulp!
BEWERKEN:
Ik heb geprobeerd netstat en TCPView uit te voeren om te controleren welk proces de poort gebruikt, maar er is niets dat die poort gebruikt. Ik heb ook geprobeerd mijn laptop opnieuw op te starten, maar ik krijg nog steeds dezelfde foutmelding.
Antwoord 1, autoriteit 100%
Je kunt zoeken hoe je dat proces kunt stoppen.
Voor Linux/MacOS-zoekopdracht (sudo) run
dit uit in de terminal:
$ lsof -i tcp:3000
$ kill -9 PID
Op Windows:
netstat -ano | findstr :3000
tskill typeyourPIDhere
verander tskill
voor taskkill
in git bash
Antwoord 2, autoriteit 50%
Misschien kun je dit als referentie nemen. Deze enkele opdrachtregel kan het proces dat op een bepaalde poort wordt uitgevoerd, beëindigen.
npx kill-port 3000
Om meerdere poorten te doden.
npx kill-port 3000 8080 4200
Antwoord 3, autoriteit 10%
Soms gebeurt het, zoals @sova voorstelde Dit overkomt mij soms, EADDR in gebruik. Meestal is er een terminalvenster op de achtergrond waar de app nog steeds op draait.En dat klopt ook bij mij.
Het gebeurt, als je de terminal lange tijd hebt geopend, ja, je hebt gelijk, je moet het proces stoppen. Maar soms hield het niet op op de achtergrond. Dus de beste oplossing is dat u de terminal sluit en opnieuw start.Het lost uw probleem op. omdat het in mijn geval werkt.
Ook
sudo lsof -i:<PORT_NO>
sluit de instantie voor de huidige tijd, maar kan het proces op de achtergrond niet stoppen. Dus voor een keer,
sudo kill <PID>
werkt, maar nogmaals, wanneer we onze code bijwerken en opslaan, treedt dit probleem opnieuw op zoals bij Nodemon.
Dus de terminal verlaten zal het probleem oplossen.OF
killall -9 node
Antwoord 4, autoriteit 6%
Ik had hetzelfde probleem.
(De onderstaande stappen werken prima op Windows 10):
- Open Taakbeheer (druk op Ctrl+Alt+Verwijderen)
- Selecteer het tabblad ‘Processen’
- Zoeken naar ‘Node.js: JavaScript aan de serverzijde’
- Selecteer het en klik op de knop ‘Taak beëindigen’
Nu kun je npm start
uitvoeren.
Ik hoop dat het je helpt.
Antwoord 5, autoriteit 6%
Voor ramen,
De Taakmanager zou zeker een knooppuntproces laten zien.
Probeer het proces te stoppen, het zal het probleem oplossen.
Antwoord 6, autoriteit 5%
Ik heb hetzelfde probleem ook ondervonden. De beste manier om dit op te lossen is (voor Windows):
-
Ga naar Taakbeheer.
-
Scroll en zoek een taakproces met de naam.
Node.js: JavaScript aan de serverzijde
-
Beëindigdeze specifieke taak.
Daar ga je!
Voer nu npm startuit en het zal werken zoals voorheen!
Antwoord 7, autoriteit 4%
Een proces doden dat poort 3000 bezit
Laten we eerst eens kijken hoe we een proces met een open poort kunnen uitschakelen.
Met de opdracht lsof kunnen we de PID met de gegeven poort ophalen:
$ lsof -i :3000 -t
12345
Dan kunnen we dit proces stoppen door gewoon te doen:
$ kill 12345
Laten we hier een oneliner van maken:
lsof -i 3000 -t | xargs kill
Als u een omgevingsvariabele gebruikt om de serverpoort in te stellen, kunnen we dat specificeren in plaats van onze waarden hard te coderen:
lsof -i ${PORT} -t | xargs kill
Ten slotte kunnen we standaard poort 3000 gebruiken als de omgevingsvariabele niet is ingesteld:
lsof -i ${PORT:-3000} -t | xargs kill
Nodemon krijgen om hooks uit te voeren
Nodemon laat je event hooks instellen via het nodemon.json configuratiebestand:
{
"events": {
"crash": "sh -c 'lsof -i :${PORT:-3000} -t | xargs kill'"
}
}
Dit zorgt ervoor dat nodemon sh -c ‘lsof -i :${PORT:-3000} -t | xargs
kill-opdracht wanneer je app crasht, waardoor het onderliggende proces wordt gedood dat het heeft voortgebracht en dat de poort openhoudt.
of je kunt deze proberen
fuser -k PORT-NO/tcp
Bijvoorbeeld:
fuser -k 3000/tcp
Je kunt dit ook proberen
fuser -n tcp -k PORT-NO
Bijvoorbeeld:
fuser -n tcp -k 3000
Antwoord 8, autoriteit 2%
Ik heb hetzelfde gezien en alle bovenstaande suggesties geprobeerd zonder succes. Hier zijn stappen die het voor mij oplossen:
– wifi uitschakelen
– npm start (dit zou moeten werken)
– zet wifi aan
Ik weet niet precies wat het root-probleem is, maar dat heeft het voor mij opgelost.
Antwoord 9, autoriteit 2%
Ik gebruikte een express-server met nodemonop NodeJS.
Ik kreeg het volgende bericht en het lijkt erop dat er een fout is:
$ node ./bin/www
Port 3000 is already in use
Er is een algemene oplossing dat als u alle node-serververbindingen beëindigt, u deze code kunt toevoegen aan uw package.json-bestand:
"scripts": {
"start": "node ./bin/www",
"stop": "taskkill -f -im node.exe"
},
Bovendien heb ik verschillende Windows-opdrachten en bash-oplossingen gevonden op Win 10 x64.
Al mijn aantekeningen staan hier:
# Beëindig alle NodeJS-serververbindingen
$ taskkill -f -im node.exe
SUCCESS: The process "node.exe" with PID 14380 has been terminated.
SUCCESS: The process "node.exe" with PID 18364 has been terminated.
SUCCESS: The process "node.exe" with PID 18656 has been terminated.
# Voorbeeld: Open Windows Taakbeheer en zie “node.exe” PID-nummer op Windows
>> Command Line
$ netstat /?
$ netstat -a -n -o
$ netstat -ano
# Stop een proces in Windows op poortnummer (voorbeeld)
Voor hulp:
$ taskkill /?
$ tskill /?
Code 1:
$ taskkill -pid 14228
ERROR: The process with PID 14228 could not be terminated.
Reason: This process can only be terminated forcefully (with /F option).
Code 2:
$ taskkill -f -pid 14228
SUCCESS: The process with PID 14228 has been terminated.
Code 3:
$ tskill 14228
# Commandoregel om naar een specifieke poort te kijken
in cmd:
$ netstat -ano | find "14228"
in bash:
$ netstat -ano | grep "14228" or $ netstat -ano | grep 14228
# Zoek node.exe met de opdracht “tasklist”
in cmd:
$ tasklist | find "node"
in bash:
$ tasklist | grep node
$ tasklist | grep node.exe
node.exe 14228 Console 2 48,156 K
node.exe 15236 Console 2 24,776 K
node.exe 19364 Console 2 24,428 K
Antwoord 10, autoriteit 2%
killall -9 node
de bovenstaande opdracht kan de vs code ssh-verbinding afsluiten wanneer u op afstand aan het ontwikkelen bent en alle knooppuntprocessen beëindigen die tot problemen kunnen leiden, vooral als u enkele apps in productie hebt met node , er is een betere manier om dit te doen door netstat te gebruiken om haal alle knooppuntprocessen op met de poort die ze gebruiken en dood dan de enige die je wilt met PID
netstat -lntp | grep node
u krijgt alle knooppuntprocessen
tcp6 0 0 :::5744 :::* LISTEN 3864/node
en dan, als je de PID (3864) krijgt, stop dan gewoon de processen met PID
kill -9 PID
of
kill -HUP PID
Antwoord 11
Dit overkomt mij soms, EADDR in gebruik. Meestal is er een terminalvenster dat zich op de achtergrond verbergt waarop de app nog steeds wordt uitgevoerd. U kunt het proces stoppen met ctrl+C in het terminalvenster.
Of misschien luister je meerdere keren naar de poort vanwege copy/pasta =)
Antwoord 12
Open Taakbeheer (druk op Ctrl+Alt+Del
Selecteer het tabblad ‘Processen’
Zoeken naar ‘Node.js: JavaScript aan de serverzijde’
Selecteer het en klik op de knop ‘Taak beëindigen’
Antwoord 13
Als u slechts één poort wilt sluiten, voert u deze opdracht uit.
kill -9 $(lsof -t -i:3000)
Het verschil tussen pkill
en kill
is dat iemand klei verwerkt. In kill pas je een filter toe. je stopt gewoon de gewenste poort.
De opdracht pkill
sluit alle knooppuntprocessen.
pkill -9 node
Gebruik pkill om geheugenlekken te voorkomen die af en toe optreden tijdens de ontwikkeling. als er meer dan één knoop is, worden ze allemaal gedood.
Het gebruik van scripts in package.jsonwordt ook geïllustreerd.
"scripts": {
"server:start": "cd server && yarn start",
"server:restart": "cd server && yarn restart",
"frontend:start": "cd frontend && yarn start",
"frontend:restart": "kill -9 $(lsof -t -i:4200) && yarn start:frontend"
},
"scripts": {
"start": "nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec 'ts-node' src/index.ts",
"restart": "pkill -9 node && start",
"kill": "pkill -9 node"
},
Antwoord 14
Ik heb 2 uur besteed aan het uitzoeken waarom EADDRINUSE
me niet toestond een app te starten (andere node-express-servers waren in orde)… het begon te werken na het toevoegen
lazyConnect: true,
naar gegevensbronconfiguratie.
Vraag me niet waarom het hielp. Ik weet het niet. Ik plaats deze informatie hier alleen voor mensen die hetzelfde probleem hebben.
Antwoord 15
Ik ben onlangs een raar port problem
tegengekomen op win10, kan het luisteren naar het serverproces niet starten op poort 8080, en ik heb het gewijzigd in 18080 , dan werkt het, maar na een tijdje verschijnt hetzelfde probleem opnieuw.
Maar ik kan geen enkel proces vinden om de poort te gebruiken, ik heb currpots
en netstat
geprobeerd, geen van hen werkt, en ik probeer de poort te openen door
python -m http.server 18080
python -m http.server 18081
python -m http.server 18082
python -m http.server 18083
python -m http.server 18084
...
, Most zegt soortgelijke melding van “poort al in gebruik”
Gelukkig heb ik gezocht en de reden gevonden. Door
netsh interface ipv4 show excludedportrange protocol=tcp
Kan zien dat sommige poorten zijn uitgesloten voor gebruik, via deze poorten niet geopend en geluisterd.
En door
net stop winnat
De meeste uitgesloten poorten worden vrijgegeven, deze poorten kunnen dan worden gebruikt.
Antwoord 16
Kwam van Google hier met een oplossing voor High Sierra.
Er is iets veranderd in de netwerkconfiguratie van macos en sommige apps (inclusief ping) kunnen localhost niet oplossen.
Het bewerken van /etc/hosts lijkt een oplossing:
cmd: sudo nano /etc/hosts/
inhoud 127.0.0.1 localhost
Of gewoon (als je zeker weet dat je /etc/hosts leeg is)
sudo echo '127.0.0.1 localhost' > /etc/hosts
Antwoord 17
Ik heb dit probleem met Git Bash op Windows. Ik voer npm start
of node app.js
uit. Na het kortstondig beëindigen met Ctrl+C en proberen de server opnieuw te starten met npm start
of node app.js
krijg ik deze foutmelding.
Als ik dit doe met de gewone Windows-opdrachtprompt, werkt het echter prima.
OfU kunt het op een andere manier doen. Open de Taakbeheeren zoek de rij “Node.js:Server-side JavaScript“. Selecteer die en beëindig de taak. Het zou nu moeten werken.
Bedankt.
Antwoord 18
Voor Windows-gebruikers: stop gewoon alle processen van Node.js in Taak
Beheerder
Ik hoop dat het zal helpen
Antwoord 19
Voor Windows-gebruikers kunt u het hulpprogramma CurrPortsgebruiken om poorten onder gemakkelijk te gebruiken
Antwoord 20
Probeer de localhost in uw browser te openen. Typ gewoon: localhost:3000
in de adresbalk.
Als de app wordt geopend, betekent dit dat uw vorige npm run
nog steeds actief is. Nu kun je gewoon wijzigingen in de code aanbrengen en de effecten zien als je dezelfde app ontwerpt, of als je een andere app wilt gebruiken, gewoon de code (in index.js van de eerder draaiende app) een beetje aanpassen en ( ververs waarschijnlijk het browsertabblad) om het te laten crashen ;)….. Voer nu npm run start
opnieuw uit vanuit je nieuwe app-directory. Ik hoop dat dit helpt! 🙂
of
U kunt Taakbeheer openen (WINDOWS_KEY+X > Taakbeheer) en u ziet de rij “Node.js:Server-side JavaScript”. Selecteer die en beëindig de taak….Het zou nu moeten werken!!
Als dat niet het geval is, wijzigt u het bestand .env
van uw app om port:3002
op te nemen en voert u de nieuwe app uit. Hiermee kunt u twee afzonderlijke apps op verschillende poorten uitvoeren. Proost!!
Antwoord 21
Eenvoudig in Linux
- Open je betaalautomaat
- Bevrijd poort van processen
-> kill $(lsof -t -i:$port)
Antwoord 22
Voordat u nodemon uitvoert, moet u eerst mongod starten. Deze foutmelding krijg je nooit. 🙂
Antwoord 23
Het kan een beheerdersproces zijn dat op de achtergrond wordt uitgevoerd en netstat
geeft dit niet weer.
Gebruik tasklist | grep node
om de PID van dit beheerdersproces te vinden en kill PID
Antwoord 24
Als u WebStorm gebruikt, moet u ervoor zorgen dat uw standaardpoort niet 3000 is
van
Bestand – & GT; Instellingen – & GT; Bouw, uitvoering, implementatie – & GT; Debugger
En er verandert
Ingebouwde serverpoort
en stel het in op “63342”
of zie dit antwoord
WebStorm LIVEETIT-poort (63342)
Antwoord 25
In Package.json Scripts Inlcude:
"start": "nodemon app.js --delay 1500ms"
Ik geloof dat het probleem voor mij was, de tijd dat de oude haven niet in de tijd afsluit door Nodemon voor de herstart. Ik heb het probleem ervaren met Multer.
Antwoord 26
Server of App Luister () Methoden kunnen op 2 plaatsen worden toegevoegd.
Zoeken naar luisteren () methoden in de startups voor toepassingen
Daarom is het teruggekeerd als de server die is gestart bij PORT XXXX en PORT XXXX al in gebruik Message Buitenzijde aan de zijkant
Antwoord 27
In mijn omstandigheid was ik net begonnen met het gebruik van VS-code en volgde een tutorial met behulp van het vervolg.
Uiteindelijk had ik een bak / www-bestand met de luister () daarin.
Ik wist hier niet van en ik runde mijn app door knooppunt app.js te gebruiken, toen het niet werkte, voegde ik toen in de Express Server-dingen bij met. Lijsten () (die prima werkte).
Maar bij het starten van Nodemon en VSCODE, werd deze op Bin / WWW en dat vereiste dat mijn app.js.
Lang verhaal kort ik had toegevoegd. Lijsten () aan mijn app.js en draaide app.js rechtstreeks wanneer ik nog niet had toegevoegd en bin / www.
Antwoord 28
Pak in ubuntu eerst het proces met behulp van poortnummer: sudo lsof -i:3000gebruik vervolgens de opdracht kill om het proces te beëindigen, bijvoorbeeld als de proces-PID 4493 is, de opdracht use: kill 4493, voor mac of windows zoek het gerelateerde commando
Antwoord 29
Ik heb dit probleem opgelost omdat de MongoDB of er is een andere app die u eerder op deze poort had uitgevoerd,
dus om het op te lossen, doodt u het proces van taakbeheer,
of verander gewoon het nummer van de poort van 3000 naar een andere.
Antwoord 30
Het is heel eenvoudig. Je kunt het in 2 eenvoudige stappen repareren.
- Controleer uw omgevingsvariabelen als er een sleutel/invoer is met de naam “POORT”.
- Indien gevonden, verwijder dat item of hernoem het naar iets anders.
Het blijkt dat een ander programma die variabele gebruikt. Wanneer je react-scripts start, zal het gewoonlijk zoeken naar een omgevingsvariabele met die titel PORT.