Node.js Port 3000 al in gebruik, maar eigenlijk niet?

Ik werk al een paar weken met een node.js-project en het werkt uitstekend. Meestal gebruik ik npm startom 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) rundit uit in de terminal:

$ lsof -i tcp:3000
$ kill -9 PID

Op Windows:

netstat -ano | findstr :3000
tskill typeyourPIDhere 

verander tskillvoor taskkillin 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):

  1. Open Taakbeheer (druk op Ctrl+Alt+Verwijderen)
  2. Selecteer het tabblad ‘Processen’
  3. Zoeken naar ‘Node.js: JavaScript aan de serverzijde’
  4. Selecteer het en klik op de knop ‘Taak beëindigen’

Nu kun je npm startuitvoeren.

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):

  1. Ga naar Taakbeheer.

  2. Scroll en zoek een taakproces met de naam.
    Node.js: JavaScript aan de serverzijde

  3. 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 | xargskill-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 pkillen killis dat iemand klei verwerkt. In kill pas je een filter toe. je stopt gewoon de gewenste poort.

De opdracht pkillsluit 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 EADDRINUSEme 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 problemtegengekomen 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 currpotsen netstatgeprobeerd, 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 startof node app.jsuit. Na het kortstondig beëindigen met Ctrl+C en proberen de server opnieuw te starten met npm startof node app.jskrijg 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:3000in de adresbalk.

Als de app wordt geopend, betekent dit dat uw vorige npm runnog 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 startopnieuw 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 .envvan uw app om port:3002op 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 netstatgeeft dit niet weer.
Gebruik tasklist | grep nodeom 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.

  1. Controleer uw omgevingsvariabelen als er een sleutel/invoer is met de naam “POORT”.
  2. 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.

Other episodes