2015-01-28 23 views
9

Ho seguito questo tutorial (http://socket.io/get-started/chat/) su come creare una semplice applicazione di chat utilizzando socket.io.node.js express socket.io port 3000 in uso

Ho provato a utilizzare comunque Express per crearlo e mi sono chiesto perché la porta 3000 è già in uso? Il codice qui sotto non funzionerà a meno che non cambi il numero di porta.

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

Esprime utilizzare la porta per eseguire altre operazioni come routing o qualcosa del genere? C'è un modo semplice per scoprire cosa sta succedendo su quella porta?

posso anche fare qualcosa di rischioso con le mie cose richiedono:

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

Grazie.

+0

Avete già eseguito la precedente esecuzione di quel programma ? Questa sarebbe la cosa più probabile, in particolare se le porte diverse da 3000 funzionano. –

+0

@himahimahima Sei su Mac OS X o Linux? Prova 'sudo lsof -i | grep 3000' per verificare se qualsiasi altro servizio utilizza la porta e ucciderlo se ce n'è uno. –

+0

@DanielLe Sono su una macchina Linux - L'ho provato e "sudo lsof -i | grep 3000" non mostra nulla – himahimahima

risposta

10

prova ad eseguire:

netstat -anp tcp | grep 3000 

Questo dovrebbe mostrare il nome del processo che utilizza la porta 3000. Ecco another issue su StackOverflow che copre la questione in modo più approfondito.

+2

hmm doesn ' Sembra che ci sia qualcosa che lo usa. deve essere all'interno dell'applicazione da qualche parte. – himahimahima

+0

Grazie! Funziona) –

17

mi sono imbattuto in questo problema troppo e ho risolto da questo:

Non utilizzare npm start per iniziare la vostra web app

Usa node app.js invece

+0

Ho avuto un problema simile quando provavo a lavorare con più app express.js allo stesso tempo (tutte in cui cercavo di usare la porta 3000). "node app.js" ha risolto anche questo problema. –

+12

Ma perché npm inizia a lanciare l'errore? –

3

Uno dei modi migliori per farlo durante lo sviluppo avverrebbe tramite IDE in cui è possibile eseguire debugging completi e scorrere il codice.

Se si utilizza WebStorm, questo funziona. Dalle configurazioni di esecuzione -> Modifica configurazioni -> Nods.js e aggiungi lo app.js come parametro del nodo. Vedi sotto la freccia negli screenshot per maggiori dettagli.

enter image description here

+0

Mi capita di usare WebStorm quindi questa era la soluzione per me, grazie! –

0

ho risolto lo stesso problema con un app espresso fare questo:

  1. Modificare il file "yourap/bin/www"
  2. trovare la linea:

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

  3. sostituirla con:

    porta var = normalizePort ('XXXX');

dove XXXX è il numero di porta che si desidera utilizzare

Poi sei libero di fare NPM iniziano! xD

1

Avevo (dimenticato che avevo) precedentemente installato ntop, che per impostazione predefinita utilizza anche la porta 3000, e quindi riceveva lo stesso errore come descritto qui.

Come altri hanno detto, l'uso netstat o lsof per trovare il servizio incriminato (e precedere il comando con sudo, per ottenere il nome corretto processo):

sudo lsof -P | grep ':3000' 

- o -

sudo netstat -anp tcp | grep 3000 

Su Ubuntu, il servizio è disabilitato con (semplicemente):

service ntop stop 
Problemi correlati