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 app
in 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 reload
ook. 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)
- Lijst item open de windows powershell
- typ
ps
en dan krijg je een lijst met processen - zoek het proces met de naam nodeen noteer de Id
- 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