node.js express socket.io port 3000 utilisé

J’ai suivi ce tutoriel ( http://socket.io/get-started/chat/ ) sur la création d’une application de discussion simple à l’aide de socket.io.

J’ai toutefois essayé d’utiliser Express pour le créer et je me demandais pourquoi le port 3000 est déjà utilisé. Le code ci-dessous ne fonctionnera que si je change le numéro de port.

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

Express utilise-t-il le port pour faire d’autres choses, comme le routage ou autre chose? Existe-t-il un moyen simple de savoir ce qui se passe sur ce port?

Je peux aussi faire quelque chose de louche avec mes choses à faire:

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

Merci.

J’ai rencontré ce problème aussi et je l’ai résolu par ceci:

N’utilisez pas npm start pour démarrer votre application Web

Utilisez plutôt le node app.js

Essayez de courir:

 netstat -anp tcp | grep 3000 

Cela devrait vous montrer le nom du processus qui utilise le port 3000. Voici un autre problème sur StackOverflow qui couvre ce problème plus en profondeur.

Une des meilleures façons de faire cela pendant le développement serait via IDE où vous pouvez faire un débogage complet et parcourir le code.

Si vous utilisez WebStorm, cela fonctionne. Depuis les configurations d’exécution -> Modifier les configurations -> Nods.js et ajoutez le app.js comme paramètre de noeud. Voir la flèche ci-dessous dans les captures d’écran pour plus de détails.

entrez la description de l'image ici

J’ai résolu le même problème avec une application express faisant ceci:

  1. Editez le fichier “yourap / bin / www”
  2. trouvez la ligne:

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

  3. remplacez-le par:

    var port = normalizePort (‘XXXX’);

où XXXX est le numéro de port que vous souhaitez utiliser

Alors vous êtes libre de commencer NPM ! xD

J’avais (oublié que j’avais installé) précédemment installé ntop , qui utilise également par défaut le port 3000, et obtenait donc la même erreur que celle décrite ici.

Comme d’autres l’ont mentionné, utilisez netstat ou lsof pour trouver le service incriminé (et préfixez la commande avec sudo pour obtenir le nom de processus correct):

 sudo lsof -P | grep ':3000' 

– ou –

 sudo netstat -anp tcp | grep 3000 

Sur Ubuntu, le service est désactivé avec (simplement):

 service ntop stop 

Semblable à la réponse ci-dessus pour ne pas utiliser npm start .

J’utilisais nodemon et avec expressjs et le générateur d’expressjs. J’utilisais nodemon pour exécuter npm start , tandis que npm se lance lui-même sur le node ./NodeApp/bin/www

J’ai donc édité pour que nodemon exécute le node ./NodeApp/bin/www par lui-même et que l’erreur disparaisse.

Conclusion

Avant

package.json

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

Après

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

Alors maintenant, je lance mon serveur avec npm run dev et plus aucune erreur.