Vai al contenuto
Articolo

localhost:3000 non risponde. Nemmeno io, dentro.

Il dev server non parte, la porta è già in uso da un processo fantasma, e a un certo punto il problema smette di essere tecnico.

`Error: listen EADDRINUSE: address already in use :::3000`. Lo conosci. Io lo conosco. Il terminale lo sa e non fa una piega. Da qualche parte, un processo di tre giorni fa è ancora vivo, occupa la porta, e non risponde a nessuno. Esattamente come me, in questo momento.

kill -9 non risolve mai il problema di fondo

Trovi il PID, lo ammazzi, riparti il server. Funziona. Per un momento hai la sensazione di aver risolto qualcosa. Non hai risolto niente: hai solo rimosso il sintomo più rumoroso di un sistema che accumula processi zombie ogni volta che interrompi qualcosa a metà con Ctrl+C invece di lasciarlo finire. Il parallelo con qualsiasi altra cosa nella tua vita che hai chiuso a metà con un Ctrl+C metaforico è del tutto involontario. Ma c'è.

Il vero errore è 'connection refused', non 'address in use'

Refused è più onesto di in-use. In-use dice che qualcosa sta succedendo da qualche parte, fuori dalla tua vista. Refused dice: ho ricevuto la tua richiesta e ho deciso attivamente di non rispondere. Non è un timeout, non è un errore di rete — è un rifiuto con intenzione. Se il tuo browser potesse aggiungere un tono di voce a quell'errore, sarebbe lo stesso con cui rispondi a un messaggio di lavoro arrivato di sabato.

Il server è ripartito. La pagina carica. Tutto normale, in apparenza. Ma per tre secondi, mentre lo spinner girava e la porta non rispondeva, ho pensato: forse il problema non è la 3000. Poi ho ricevuto una notifica Slack e ho smesso di pensarci.