localhost:3000: cos'è e come risolvere connessione rifiutata o porta in uso | We.Inc
Cosa significa localhost:3000, quali dev server usano la porta 3000 per impostazione predefinita e i comandi per Mac, Linux e Windows che risolvono gli errori connection refused e address already in use.
localhost:3000 è un server web che gira sul tuo computer e resta in ascolto sulla porta 3000. Next.js, l'esempio hello world di Express e Rails usano tutti quella porta per impostazione predefinita. Se la pagina rifiuta la connessione, lì non c'è nulla in ascolto. Se il server non parte, un altro processo occupa già la porta, e puoi trovarlo e fermarlo.
Quale errore hai?
Cosa vedi
Significato
Prima cosa da provare
Browser: localhost ha rifiutato la connessione
Niente è in ascolto sulla porta 3000
Avvia il dev server e leggi l'URL che stampa
Terminale: EADDRINUSE :::3000
Un altro processo usa già la porta 3000
Trova quel processo e fermalo, oppure usa un'altra porta
La pagina si carica, ma compare una vecchia app
Il server di un altro progetto è ancora in esecuzione
Fermalo, poi riavvia quello giusto
localhost significa sempre questa macchina, e il numero dopo i due punti sceglie con quale programma su di essa stai parlando. La maggior parte dei problemi con la porta 3000 nasce da due situazioni opposte: lì non gira nessun server, oppure due server la vogliono contemporaneamente. Inserisci una porta qui sotto per ottenere i comandi per il tuo sistema.
Inserisci il numero di porta usato dalla tua app. Il valore predefinito è 3000.
Copia il comando di ricerca per il tuo sistema ed eseguilo in un terminale per vedere quale processo è in ascolto.
Ferma quel processo con il secondo comando, oppure avvia la tua app su una porta diversa.
Se non c'è proprio nulla in ascolto, controlla la tabella delle porte predefinite per essere sicuro che il tuo strumento usi davvero la 3000.
Leggi l'URL che il dev server stampa all'avvio. Vite, per esempio, usa la 5173 e passa alla porta libera successiva se quella è occupata.
Ferma i dev server con Ctrl+C nel loro terminale invece di chiudere la finestra, cosa che può lasciare il processo in esecuzione.
Usa http, non https, a meno che tu non abbia avviato apposta il server con HTTPS; Next.js serve HTTPS in locale solo con --experimental-https.
Dentro Docker l'app deve ascoltare su 0.0.0.0 e la porta deve essere pubblicata, altrimenti localhost sulla macchina host rifiuterà la connessione.
Domande frequenti
Cos'è localhost:3000?
localhost è il nome del tuo computer, di solito 127.0.0.1 o ::1, e 3000 è un numero di porta. Insieme indicano un server in esecuzione in locale, molto spesso un server di sviluppo per un'app web. Nessun altro su internet può aprire il tuo URL localhost.
Perché localhost:3000 dice che ha rifiutato la connessione?
Nessun programma accetta connessioni su quella porta. Il dev server potrebbe non essere in esecuzione, potrebbe essersi bloccato con un errore o potrebbe ascoltare su un'altra porta, come la 5173. Controlla il terminale in cui l'hai avviato.
Come risolvo l'errore porta 3000 già in uso?
Trova il processo che occupa la porta con lsof su Mac o Linux, oppure con netstat -ano su Windows, poi fermalo con kill o taskkill. In alternativa avvia la tua app su un'altra porta, per esempio next dev -p 3001.
Come cambio la porta in Next.js?
Passa -p, come in next dev -p 4000, oppure imposta la variabile d'ambiente PORT quando esegui il comando. La documentazione di Next.js precisa che PORT non si può impostare dentro un file .env, perché il server parte prima che quel file venga letto.
Qualcun altro può aprire il mio localhost:3000?
Non tramite quell'indirizzo, perché localhost sulla sua macchina indica il suo computer. Per condividerlo sulla tua rete, il server deve ascoltare su tutte le interfacce e gli altri devono usare l'indirizzo IP locale della tua macchina e la porta.
Le porte in un paragrafo
Un computer può far girare molti server contemporaneamente, quindi ognuno ascolta su una porta numerata. Un solo programma alla volta può ascoltare su una certa porta e indirizzo, ed è per questo che avviare un secondo server sulla 3000 fallisce con EADDRINUSE.
La porta 3000 non ha un significato ufficiale. È diventata un'abitudine perché strumenti popolari l'hanno scelta come predefinita, quindi è anche la porta più probabilmente occupata da un server di cui ti sei dimenticato.
Connessione rifiutata, passo dopo passo
Per prima cosa verifica che un server sia in esecuzione: il suo terminale dovrebbe mostrare un messaggio di pronto e un URL. Se è terminato con un errore, correggi prima quello, perché il browser non può connettersi a un server che non c'è.
Poi confronta le porte. Se il terminale dice 5173 o 4321 e tu hai digitato 3000, il browser bussa a una porta vuota. Infine prova 127.0.0.1:3000 al posto di localhost:3000, così escludi la risoluzione del nome verso l'indirizzo IPv6 quando il server ascolta solo su IPv4.
Porte predefinite dei dev server
Valori predefiniti dalla documentazione di ciascuno strumento, ottobre 2026
Strumento
Comando
URL predefinito
next dev / next start
Esempio hello world di Express
Ruby on Rails
bin/rails server
Vite
Anteprima Vite
vite preview
Astro
astro dev
Gestire una porta occupata nel tuo server
Leggere la porta da PORT e segnalare EADDRINUSE in modo chiaro
Un piccolo server Express che ripiega sulla 3000 e stampa un messaggio leggibile quando la porta è occupata.
macOS e Linux
Elenca il processo in ascolto sulla porta, poi fermalo tramite il suo PID (la seconda colonna).
Windows (Prompt dei comandi)
Mostra le connessioni con i relativi ID di processo, filtra per porta, poi termina quel PID.
Usare invece un'altra porta
Lascia stare l'altro processo e avvia la tua app su una porta libera.
Libera una porta
Porta
Le porte vanno da 1 a 65535. Vengono mostrati i comandi per la 3000.