wake-up-neo.net

node.js Express Socket.io Port 3000 wird verwendet

Ich habe folgende ( http://socket.io/get-started/chat/ ) Anleitung zum Erstellen einer einfachen Chat-Anwendung mit socket.io befolgt.

Ich habe jedoch versucht, Express zu verwenden, um es zu erstellen, und ich habe mich gefragt, warum Port 3000 bereits verwendet wird. Der folgende Code funktioniert nicht, wenn ich die Portnummer nicht ändere.

/* Make the http server listen on port 3000. */
http.listen(3000, function(){
 console.log('listening on *:3000');
});

Verwendet Express den Port, um andere Dinge wie Routing oder etwas zu tun? Gibt es eine einfache Möglichkeit, um herauszufinden, was an diesem Port passiert?

Ich kann auch etwas zweifelhaft mit meinen geforderten Dingen machen:

var express = require('express');
var app = require('express')();
var http = require('http').Server(app);
var router = express.Router();
var io = require('socket.io')(http);

Vielen Dank.

13
himahimahima

Ich bin auch auf dieses Problem gestoßen und habe es dadurch gelöst:

Verwenden Sie nicht npm start, um Ihre Web-App zu starten

Verwenden Sie stattdessen node app.js

25
Li Ethan

Laufen Sie mal:

netstat -anp tcp | grep 3000

Hier sollte der Name des Prozesses angezeigt werden, der Port 3000 verwendet. Hier ist ein weiteres Problem in StackOverflow, das dieses Problem ausführlicher behandelt.

12
Brian Tovar

Eine der besten Möglichkeiten, dies während der Entwicklung zu tun, wäre durch IDE = wo Sie umfassendes Debugging durchführen und den Code schrittweise durchgehen können. 

Wenn Sie WebStorm verwenden, funktioniert dies. Gehen Sie unter Laufkonfigurationen -> Konfigurationen bearbeiten -> Knoten.js und fügen Sie den app.js als Knotenparameter hinzu. Weitere Informationen finden Sie in den Screenshots unter dem Pfeil. 

 enter image description here

4
Gajen Sunthara

Ich hatte (vergessen, dass ich hatte) zuvor ntop installiert, das standardmäßig auch den Port 3000 verwendet und daher den gleichen Fehler wie hier beschrieben erhielt.

Wie andere bereits erwähnt haben, verwenden Sie netstat oder lsof, um den fehlerhaften Dienst zu finden (und vor dem Befehl Sudo anzugeben, um den korrekten Prozessnamen zu erhalten):

Sudo lsof -P | grep ':3000'

- oder -

Sudo netstat -anp tcp | grep 3000

Auf Ubuntu ist der Dienst mit (einfach) deaktiviert:

service ntop stop
2
Dan0

Ähnlich wie oben, um npm start nicht zu verwenden. 

Ich habe nodemon und mit expressjs und expressjs generator verwendet. Ich habe nodemon verwendet, um npm start auszuführen, während npm sich selbst ausführt. node ./NodeApp/bin/www

Also habe ich editiert, damit nodemon node ./NodeApp/bin/www alleine ausführt, und der Fehler geht weg.

Fazit

Vor

package.json

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node ./NodeApp/bin/www",
    "build": "webpack --watch",
    "dev": "nodemon --exec npm start"
},

Nach dem

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack --watch",
    "dev": "nodemon --exec node ./NodeApp/bin/www"
},

Nun führe ich meinen Server mit npm run dev und keinen Fehlern mehr aus.

2
cjmling

Ich habe das gleiche Problem mit einer Express-App gelöst:

  1. Bearbeiten Sie die Datei "yourap/bin/www"
  2. finde die Zeile: 

    var port = normalizePort (process.env.PORT || '3000'); 

  3. ersetze es durch:

    var port = normalizePort ('XXXX');

dabei ist XXXX die Portnummer, die Sie verwenden möchten

Dann können Sie npm starten! xD

Ich habe es so gelöst:

npm installiere shelljs

und fügen Sie Code für den Prozess kill nodejs hinzu, bevor Sie den Listen-Port starten

var Shell = require('shelljs');
Shell.exec("pkill nodejs");
Shell.exec("pkill node");

/* Make the http server listen on port 3000. */
http.listen(3000, function(){
 console.log('listening on *:3000');
});
0
Utopia

für mich hilft 3000 || 3333, und es ist das Problem behoben

0
chavy