EADDRINUSE: address already in use — como liberar o porto
Resposta rápida
Outro proceso xa está a escoitar no porto. Atópao e mátao:
- macOS / Linux:
lsof -i :3000→kill -9 <PID> - Windows:
netstat -ano | findstr :3000→taskkill /PID <pid> /F - Calquera SO, un só comando:
npx kill-port 3000
…ou simplemente arrinca o teu servidor noutro porto. O erro completo ten esta pinta:
MAKINOTE$ yarn startyarn run v1.22.19$ next startError: listen EADDRINUSE: address already in use 0.0.0.0:3000 at Server.setupListenHandle [as _listen2] (node:net:1432:16) at listenInCluster (node:net:1480:12) at doListen (node:net:1629:7) at processTicksAndRejections (node:internal/process/task_queues:84:21) { code: 'EADDRINUSE', errno: -48, syscall: 'listen', address: '0.0.0.0', port: 3000}
Por que ocorre
EADDRINUSE significa que a dirección e o porto que quere o teu servidor xa están ocupados. Nunha máquina de desenvolvemento a causa habitual é un servidor de desenvolvemento anterior que non se pechou ben — un proceso que crasheou, un traballo en segundo plano solto, ou unha segunda terminal que o segue executando. Menos a miúdo, outra aplicación ocupa o porto de verdade: outro servizo, un contedor de Docker ou un daemon do sistema.
Liberar o porto en macOS e Linux
Atopa o proceso que ocupa o porto con lsof (en Linux tamén serven ss -ltnp ou fuser 3000/tcp):
MAKINOTE$ lsof -i :3000COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEnode 38091 xabier.lameirocardam 24u IPv6 0xee02297dd086ebc1 0t0 TCP *:hbci (LISTEN)
Despois termínao. Proba primeiro un kill <PID> limpo, e recorre a kill -9 <PID> só se o proceso o ignora:
MAKINOTE$ kill -9 38091
Liberar o porto en Windows
Lista o PID asociado ao porto e despois mátao:
netstat -ano | findstr :3000taskkill /PID 38091 /F
Un só comando en calquera SO
Se prefires non buscar PIDs, kill-port faino por ti — sen instalar nada:
npx kill-port 3000
Ou usa outro porto
Moitas veces o máis rápido é non pelexar polo porto:
PORT=3001 npm run dev # apps que len process.env.PORTnext dev -p 3001 # Next.js
Dentro de Docker
Se o servidor corre nun contedor, o porto do host ocúpao o mapeo de portos, non un PID local — lsof apuntará a com.docker. Para o contedor (docker ps e logo docker stop <id>) ou cambia o mapeo (-p 3001:3000).
