Erro EADDRINUSE ("porta já em uso"): como resolver
O que significa o erro EADDRINUSE
O erro EADDRINUSE (do inglês Error: Address already in use) acontece quando sua aplicação tenta "ouvir" (listen) em uma porta que já está sendo usada por outro processo. No Node.js, a mensagem costuma ser parecida com Error: listen EADDRINUSE: address already in use :::3000.
Em resumo: a porta 3000 (ou qualquer outra) já está ocupada, e dois processos não podem usar a mesma porta ao mesmo tempo.
Por que isso acontece
- Você iniciou a aplicação duas vezes sem encerrar a primeira.
- Um processo anterior travou e ficou "preso" segurando a porta.
- Outra aplicação no mesmo servidor já usa essa porta.
- Você fixou uma porta no código (ex.:
app.listen(3000)) em vez de usar a porta fornecida pelo ambiente.
Como resolver no seu computador (local)
1. Identifique o processo que está usando a porta
No Linux ou macOS:
lsof -i :3000
No Windows:
netstat -ano | findstr :3000
2. Encerre o processo (troque PID pelo número que apareceu)
No Linux ou macOS: kill -9 PID
No Windows: taskkill /PID PID /F
A solução definitiva: use a porta do ambiente
Fixar a porta no código é a causa mais comum do problema em produção. Em vez de app.listen(3000), use a variável de ambiente PORT:
const port = process.env.PORT || 3000;
app.listen(port);
Assim, o ambiente de hospedagem define a porta correta automaticamente e o conflito desaparece.
Como a Square Cloud evita esse problema
Na Square Cloud, cada aplicação roda em um ambiente isolado e dedicado — nenhum outro processo "rouba" a sua porta. Basta sua aplicação respeitar a variável PORT e configurar a porta no arquivo squarecloud.app; o deploy cuida do resto.
Ainda com erro?
Se mesmo assim a aplicação não sobe, revise o comando de inicialização no artigo Minha aplicação não inicia: Verificando o script de start.
Atualizado em: 13/06/2026
Obrigado!
