Cookies
This website uses cookies to improve the user experience, more information on the legal information path.
Notas
0
anos
0
meses
0
días
0
horas
0
minus
0
segus
00
Esta é a imaxe de fondo
2

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 :3000kill -9 <PID>
  • Windows: netstat -ano | findstr :3000taskkill /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 start
yarn run v1.22.19
$ next start
Error: 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 :3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 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 :3000
taskkill /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.PORT
next 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).