539 Stimmen

Wie behebt man den Fehler: listen EADDRINUSE bei der Verwendung von NodeJS?

Wenn ich einen Server mit dem Port 80 betreibe und versuche, die XMLHttpRequest Ich erhalte diesen Fehler: Error: listen EADDRINUSE

Warum ist es ein Problem für NodeJS, wenn ich eine Anfrage stellen möchte, während ich einen Server auf dem Port 80 laufen lasse? Für die Webbrowser ist es kein Problem: Ich kann im Internet surfen, während der Server läuft.

Der Server ist:

  net.createServer(function (socket) {
    socket.name = socket.remoteAddress + ":" + socket.remotePort;
    console.log('connection request from: ' + socket.remoteAddress);
    socket.destroy();
  }).listen(options.port);

Und die Anfrage:

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function() {
    sys.puts("State: " + this.readyState);

    if (this.readyState == 4) {
        sys.puts("Complete.\nBody length: " + this.responseText.length);
        sys.puts("Body:\n" + this.responseText);
    }
};

xhr.open("GET", "http://mywebsite.com");
xhr.send();

2voto

robinclark007 Punkte 143

Ich habe das gleiche Problem, und ich schließe einfach das Terminal und öffne ein neues Terminal und führe

node server.js

Das funktioniert bei mir, manchmal muss man nur ein paar Sekunden warten, bis es wieder funktioniert.

Aber das funktioniert nur auf einem Entwicklerrechner und nicht auf einer Serverkonsole.

2voto

Khurram Ijaz Punkte 1804

Unter Debian habe ich herausgefunden, dass man, um auf Port 80 zu laufen, den Befehl als Root eingeben muss, d.h.

sudo node app.js

Ich hoffe, es hilft

1voto

Nizar Blond Punkte 1786

Wenn Sie den NODE_PORT löschen, könnte dies Ihren Chrome-Prozess oder andere Prozesse, die denselben Port abhören, zerstören, und das ist ärgerlich.

Dieses Shell-Skript könnte hilfreich sein - in meinem Fall ist der Port 1337, aber Sie können ihn jederzeit ändern

# LOGIC

CHROME_PIDS=`pidof chrome`
PORT_PIDS=`lsof -t -i tcp:1337`

for pid in $PORT_PIDS
do

if [[ ${CHROME_PIDS} != *$pid* ]];then

    # NOT FOUND IN CHROME PIDS

    echo "Killing $pid..."
    ps -p "$pid"

    kill -kill "$pid"
    fi

done

sails lift
# OR 'node app' OR whatever that starts your node

exit

0voto

MEAbid Punkte 540

Wenn Sie dieses Problem lösen wollen

$ node server events.js:141 throw er; // Unbehandeltes 'Fehler'-Ereignis ^

Fehler: EADDRINUSE abhören :::3000 at Object.exports._errnoException (util.js:907:11) at exports._exceptionWithHostPort (util.js:930:20) at Server._listen2 (net.js:1250:14) at listen (net.js:1286:10) at Server.listen (net.js:1382:5) at EventEmitter.listen ( C:\sendbox\mean\node_modules\express\lib\application .js:617:24) bei Object. ( C:\sendbox\mean\server.js :28:5) at Modul._compile (module.js:409:26) at Objekt.Modul._Erweiterungen..js (module.js:416:10) bei Modul.load (module.js:343:32)

Ändern Sie Ihre Portnummer auf 8000

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X