ExpressJS – throw er Onverwerkte foutgebeurtenis

Ik heb de expressjs-toepassing gemaakt met de volgende opdrachten:

express -e folderName
npm install ejs --save
npm install

Als ik de applicatie start met: node app.js, krijg ik de volgende fouten:

events.js:72
    throw er; // Unhandled 'error' event
          ^
Error: listen EADDRINUSE
    at errnoException (net.js:884:11)
    at Server._listen2 (net.js:1022:14)
    at listen (net.js:1044:10)
    at Server.listen (net.js:1110:5)
    at Object.<anonymous> (folderName/app.js:33:24)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)

Hoe kan ik dit oplossen?


Antwoord 1, autoriteit 100%

U had een andere server gebruikt, gebruik dezelfde poort als 8080.

Misschien had u node appin een andere shell uitgevoerd, sluit deze en voer opnieuw uit.

U kunt PORT-nr. is beschikbaar of gebruikt niet

netstat -tulnp | grep <port no>

Als alternatief kunt u lsof:

gebruiken

lsof -i :<port no>

Antwoord 2, autoriteit 16%

We krijgen een soortgelijke foutmelding wanneer we onze express-app soms gebruiken. In dat geval moeten we hetzelfde volgen. We moeten controleren of het in een terminal wordt uitgevoerd.
Als u het proces wilt vinden en beëindigen, volgt u deze stappen:

  • ps aux | grep-knooppunt
  • Zoek de proces-ID (tweede van links):
  • doden -9 PRCOCESS_ID

OF

Gebruik een enkele opdracht om alle actieve knooppuntprocessen te sluiten.

ps aux | awk '/node/{print $2}' | xargs kill -9

Antwoord 3, autoriteit 7%

Er is waarschijnlijk nog een instantie actief.
Dit zal het oplossen.

killall node

Update: Deze opdracht werkt alleen op Linux/Ubuntu & Mac.


Antwoord 4, autoriteit 4%

Als je Linux gebruikt, kan dit probleem ook optreden als Nodejs niet als root draait.

Verander hiervan:

nodejs /path/to/script.js

Hiervoor:

sudo nodejs /path/to/script.js

Het is me net overkomen en geen van de andere suggesties hier heeft het opgelost. Gelukkig herinnerde ik me dat het script onlangs werkte toen het als root werd uitgevoerd. Ik hoop dat dit iemand helpt!

Disclaimer:dit is waarschijnlijk niet de beste oplossing voor een productieomgeving. Als u uw service als root start, kunnen er beveiligingslekken ontstaan in uw server/toepassing. In mijn geval was dit een oplossing voor een lokale dienst, maar ik zou anderen aanmoedigen om wat meer tijd te besteden aan het opsporen van de oorzaak.


Antwoord 5, autoriteit 3%

Dit komt omdat de poort die u gebruikt om het script uit te voeren al in gebruik is.
U moet alle andere knooppunten stoppen die dat bericht gebruiken.
daarvoor kun je alle nodes controleren door

ps -e

of voor knooppuntproces Gebruik alleen ps -ef | grep node
Dit geeft u de lijst met alle knoopproces met ID

Om alle knoopproces

te doden

sudo killall -9 node

of voor de specifieke ID sudo kill -9 id


Antwoord 6, Autoriteit 2%

Ik heb de bug gerepareerd door de poort te veranderen die was

app.set('port', process.env.PORT || 3000);<br>

en gewijzigd in:

app.set('port', process.env.PORT || 8080);<br>

Antwoord 7

Het poortknooppunt probeert te gebruiken, kan al door een ander programma worden gebruikt. In mijn zaak was het ntop , die ik onlangs had geïnstalleerd. Ik moest openen http: // localhost: 3000 / in een browser om het te beseffen. Een andere manier om het proces te vinden dat wordt gegeven hier .


Antwoord 8

Sluit eventuele andere knoopservers die actief zijn, zelfs als ze zich in andere terminalvensters bevinden of op verschillende poorten lopen. Dat zou het probleem moeten oplossen.


Antwoord 9

Als u hetzelfde poortnummer wilt gebruiken, typt u kill %in de terminal, die het huidige achtergrondproces doodt en de poort bevrijdt voor verder gebruik.


Antwoord 10

Dit betekent dat uw bestand nu wordt uitgevoerd. Voer gewoon onderstaande code in en probeer het opnieuw:

sudo pkill node

Antwoord 11

Eigenlijk CTRL + C-toetsen die de poort niet loslaten die wordt gebruikt door het knooppuntproces. Dus er is deze fout.
De resolutie naar het probleem gebruikte de volgende codefragment in server.js:

process.on('SIGINT', function() {
  console.log( "\nGracefully shutting down from SIGINT (Ctrl-C)" );
  // some other closing procedures go here
  process.exit(1);
});

Dit werkte voor mij.

U kunt ook controleren op andere oplossingen die worden genoemd op sierlijke shutdown in nodejs


Antwoord 12

Reden voor deze fout

Een ander proces is al in de poort uitgevoerd die u hebt opgegeven

eenvoudige en snelle oplossing

op Linux OS, u hebt bijvoorbeeld 3000 opgegeven als de poort

  • Open de terminal en voer lsof -i :3000. Als een proces al op poort 3000 draait, ziet u dit afdrukken op de console
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node    16615 aegon   13u  IPv6 183768      0t0  TCP *:3000 (LISTEN)

Antwoord 13

Als je hebt geprobeerd om alle knooppuntsinstanties en andere services te doden die op 3000 luistert (de standaardinstelling gebruikt door de Express Skeleton-instellingen) zonder baten, moet u controleren of uw omgeving geen ‘poort’ is om iets te definiëren niet verwacht. Anders krijg je waarschijnlijk dezelfde fout. In het app.js-bestand van het Express Skeleton merkt u LINE 15:

app.set('port', process.env.PORT || 3000);

Antwoord 14

In-order om dit te verhelpen, de server te beëindigen of te sluiten die u gebruikt.
Als u Eclipse IDE gebruikt, volg dan dit,

Run & GT; Debug

Klik met de rechtermuisknop op het werkingsproces en klik op beëindig .


Antwoord 15

evenementen.js: 183 gooien; // ongewijzigde ‘fout’ gebeurtenis

Ik kreeg ook hetzelfde soort probleem en probeerde veel manieren, maar uiteindelijk heb dit, dit werkt goed:

npm install [email protected] --save-dev --save-exact

Zie deze link voor meer verduidelijkingen https://github.com/ Ionic-team / ionic-cli / problemen / 2922


Antwoord 16

Ik kwam vandaag in hetzelfde probleem en de haven werd niet gebruikt. De volgende aanpak heeft geholpen:

rm -rf node_modules && npm cache clean && npm install
npm start

Antwoord 17

Op Windows:

cmd 1: lsof -i: & lt; poort no & gt;

Dit geeft de proces-ID

cmd 2: Kill -9 & LT; Process ID & GT;

Gereed


Antwoord 18

In mijn geval ik moest werken vagrant reloadook. Zelfs zonder knooppuntprocessen die mijn express-app in mijn virtuele machine uitvoeren, kreeg ik deze foutmelding nogmaals totdat hij de vagrant vak herladen.


Antwoord 19

Stop de service die die poort gebruikt.

sudo service NAMEOFSERVICE stop

Antwoord 20

In mijn geval werd het probleem veroorzaakt door het vergeten om next()aan te roepen in een expressjs `use’ methode-aanroep.

Als de huidige middleware de verzoek-antwoordcyclus niet beëindigt, moet het next() aanroepen om de controle door te geven aan de volgende middleware, anders blijft het verzoek hangen.

http://expressjs.com/guide/using-middleware.html


Antwoord 21

Dit werkte voor mij.

http://www.codingdefined. com/2015/09/hoe-op te lossen-nodejs-error-listen.html

Verander gewoon het poortnummer in de projecteigenschappen.


Antwoord 22

Je kunt ook de poort van Gruntfile.js wijzigen en opnieuw uitvoeren.


Antwoord 23

Nadat ik hetzelfde proces meerdere keren had uitgeschakeld en niet kon vinden wat er nog meer op poort 8000 draaide, realiseerde ik me dat ik twee keer op poort 8000 probeerde te draaien:

Vroeger:

MongoClient.connect(db.url, (err, database) => {
  if (err) return console.log(err);
  require('./app/routes')(app, database);
  app.listen(port, () => {
    console.log('We are live on ' + port);
  });
});
require('./app/routes')(app, {});
app.listen(port, () => {
  console.log("We are live on " + port);
});

Na:

MongoClient.connect(db.url, (err, database) => {
  if (err) return console.log(err);
  require('./app/routes')(app, database);
  app.listen(port, () => {
    console.log('We are live on ' + port);
  });
});
require('./app/routes')(app, {});

Antwoord 24

Ik had hetzelfde probleem en ontdekte dat een nodejs-proces dat ik eerder had geannuleerd met CTRL+C nog steeds actief was. Het probleem in Windows 10 is dat Ctrl + C niet sierlijk dodennodejs. Ik opende Taakbeheer en doodde het proces handmatig. De oplossingen op GitHub werkten niet voor mij.


Antwoord 25

Als u Windows gebruikt, kunt u het proces beëindigen vanuit Taakbeheer voor node.js


Antwoord 26

Geen van de antwoorden werkte voor mij.

Toen ik mijn computer opnieuw opstartte, kon ik de server aan de praat krijgen.

Mac
shutdown now -r

Linux
sudo shutdown now -r


Antwoord 27

->controleer wat er op poort 8080 draait of welke poort u ook wilt controleren

lsof -i @localhost:8080

Als er iets actief is, kun je het sluiten of een kill-opdracht gebruiken om het te sluiten


Antwoord 28

Controleer eenvoudig uw teminal in Visual Studio Code
Omdat ik mijn node-app aan het draaien was en ik mijn laptop in de slaapstand zet, zet ik de volgende ochtend mijn laptop weer aan om software te ontwikkelen. Dan voer ik de opdracht opnieuw uit nodemon app.js
De eerste liep vanaf de nacht en de tweede voerde mijn laatste opdracht uit, dus twee opdrachtprompts luisteren naar dezelfde poorten, daarom krijg je dit probleem.
Eenvoudig Sluit één terminal of alle terminals en voer vervolgens uw node app.js of nodemon app.js uit


Antwoord 29

De poort waarnaar u luistert, wordt al beluisterd door een ander proces.

Toen ik met deze fout werd geconfronteerd, heb ik het proces afgebroken met Windows PowerShell (omdat ik Windows gebruikte)

  1. Lijst item open de windows powershell
  2. typ psen dan krijg je een lijst met processen
  3. zoek het proces met de naam nodeen noteer de Id
  4. type Stop-process <Id>
    Ik denk dat het hulp is voor Windows-gebruikers

Antwoord 30

ALS het in mac is, dan draait het allemaal om IP van x86_64-apple-darwin13.4.0. Als je fouten volgt, zou het iets te maken hebben met x86_64-apple-darwin13.4.0. Toevoegen

127.0.0.1 x86_64-apple-darwin13.4.0

naar /etc/hostsbestand. Dan is het probleem weg

Other episodes