Tenho trabalhado com um projeto node.js por algumas semanas e tem funcionado muito bem. Normalmente, eu uso npm start
para executar meu aplicativo e visualizá-lo em um navegador no localhost, porta 3000.
Hoje, comecei a receber o seguinte erro ao usar npm start:
Server started on port 3000
Port 3000 is already in use
Verifiquei o monitor de recursos e não tenho nenhum outro processo em execução na porta 3000. Por que estou recebendo essa mensagem de erro?
No meu app.js, tenho o seguinte código para definir a porta ... isso está incorreto? Funcionava bem antes, então não tenho certeza do que estou fazendo de errado.
// Set Port
app.set('port', (process.env.PORT || 3000));
app.listen(app.get('port'), function() {
console.log('Server started on port '+app.get('port'));
});
Obrigado pela ajuda!
EDITAR:
Tentei executar netstat e TCPView para verificar qual processo está usando a porta, mas não há nada usando essa porta. Eu também tentei reiniciar meu laptop, mas ainda recebo o mesmo erro.
fonte
netstat
em um prompt de comando ou conectar-se a localhost: 3000 com um equivalente telnet - PuTTY, por exemplo.app.listen()
instruções em seu aplicativo em outro.listen()
que também está tentando iniciar um servidor nessa porta. O primeiro funciona, o segundo relata o erro. Pesquise seu código por.listen
.Respostas:
Você pode pesquisar sobre como matar esse processo.
Para Linux / Mac OS, pesquise
(sudo) run
no terminal:No Windows:
mudança
tskill
parataskkill
no git bashfonte
lsof
mas comsudo lsof
eu recebo algo, e matar aquele processo resolveu o problema.Às vezes acontece, como propôs @sova. Isso às vezes acontece comigo, EADDR em uso. Normalmente, há uma janela de terminal escondida no fundo que ainda está executando o aplicativo. E isso também está certo para mim.
Acontece, quando você abre o terminal há muito tempo, sim, você tem razão, você tem que parar o processo. Mas às vezes não parava em segundo plano. Portanto, a melhor solução é fechar o terminal e reiniciá-lo. Isso resolverá seu problema. porque no meu caso funciona.
Além disso,
feche a instância para o tempo presente, mas não é possível interromper o processo em segundo plano. Então, por uma vez,
funciona, mas novamente quando atualizamos nosso código e salvamos, esse problema ocorre novamente como com Nodemon .
Portanto, saia do terminal resolverá o problema. OU
fonte
killall -9 node
conseguir rodar o servidor localmente.Talvez você possa tomar isso como referência. Esta única linha de comando pode eliminar o processo em execução em determinada porta.
Para matar várias portas.
fonte
Para janelas, o Gerenciador de Tarefas definitivamente mostraria um processo de nó em execução. Tente matar o processo, isso resolverá o problema.
fonte
Eu tive o mesmo problema. (As etapas abaixo funcionam bem no Windows 10):
Agora você pode correr
npm start
.Espero que ajude você.
fonte
Eu vi a mesma coisa e tentei todas as sugestões acima sem sucesso. Aqui estão as etapas que resolvem isso para mim: - desligar wi-fi - iniciar npm (isso deve funcionar) - ativar wi-fi
Não tenho certeza de qual é o problema raiz, mas isso o resolveu para mim.
fonte
netstat -ano
não listou nada usando a porta 3000.Matando um processo que possui a porta 3000
Primeiro, vamos dar uma olhada em como podemos eliminar um processo que tem uma porta aberta.
Usando o comando lsof, podemos recuperar o PID que tem a porta fornecida:
Então, podemos eliminar esse processo apenas fazendo:
Vamos transformar isso em uma linha:
Se você estiver usando uma variável de ambiente para definir a porta do servidor, podemos especificar isso em vez de codificar nossos valores:
Por último, podemos usar como padrão a porta 3000 se a variável de ambiente não estiver definida:
Fazendo o nodemon executar ganchos
O Nodemon permite configurar ganchos de eventos por meio do arquivo de configuração nodemon.json:
Isso fará com que o nodemon execute o
${PORT:-3000} -t | xargs
comando sh -c 'lsof -i: kill sempre que seu aplicativo travar, matando assim o processo filho que ele gerou que mantém a porta aberta.ou você pode tentar este
por exemplo:
fonte
lsof -i :3000 -t
= \fuser -k port-number/tcp
Eu estava usando o servidor expresso com nodemon no NodeJS. Recebi a seguinte mensagem e parece um erro:
Existe uma solução geral que se você encerrar todas as conexões do servidor de nó, você pode adicionar este código em seu arquivo package.json:
Além disso, encontrei várias soluções de comando e bash do Windows no Win 10 x64.
Todas as minhas notas estão aqui:
# Encerrar todas as conexões de servidor NodeJS
# Exemplo: Abra o Gerenciador de Tarefas do Windows e veja o número PID "node.exe" no Windows
# Mate um processo no Windows pelo número da porta (exemplo)
Para ajuda:
Código 1:
Código 2:
Código 3:
# Linha de comando para procurar uma porta específica
em cmd:
em bash:
# Encontre node.exe usando o comando "tasklist"
em cmd:
em bash:
fonte
Isso acontece comigo às vezes, EADDR em uso. Normalmente, há uma janela de terminal escondida no fundo que ainda está executando o aplicativo. Você pode parar o processo com ctrl + C na janela do terminal.
Ou talvez você esteja ouvindo a porta várias vezes devido a copy / pasta =)
fonte
.listen()
várias vezes?Abra o Gerenciador de Tarefas (pressione Ctrl + Alt + Del Selecione a 'Aba Processos' Procure por 'Node.js: JavaScript do lado do servidor' Selecione-o e clique no botão 'Finalizar tarefa'
fonte
Vim do Google aqui com uma solução para High Sierra.
Algo mudou na configuração de rede de macos e alguns aplicativos (incluindo ping) não podem resolver o localhost.
Editar / etc / hosts parece uma solução:
cmd:
sudo nano /etc/hosts/
conteúdo127.0.0.1 localhost
Ou simplesmente (se você tiver certeza de que seu / etc / hosts está vazio)
sudo echo '127.0.0.1 localhost' > /etc/hosts
fonte
Passei 2h descobrindo por que
EADDRINUSE
não estava me permitindo iniciar um aplicativo (outros servidores Node-Express estavam ok) ... começou a funcionar após adicionarlazyConnect: true,
a configuração da fonte de dados.Não me pergunte por que ajudou. Eu não sei. Estou colocando essas informações aqui apenas para pessoas com o mesmo problema.
fonte
Eu tenho esse problema usando Git Bash no Windows. Eu corro
npm start
, ounode app.js
. Depois de encerrá-lo com Ctrl + C em breve e tentar iniciar o servidor novamente usandonpm start
ounode app.js
então recebo esta mensagem de erro.Quando faço isso com o prompt de comando normal do Windows , no entanto, funciona bem.
Ou você pode fazer isso de outra maneira. Abra o Gerenciador de tarefas e encontre a linha " Node.js: JavaScript do lado do servidor ". Selecione isso e termine a tarefa . Deve funcionar agora.
Obrigado.
fonte
Se você deseja fechar apenas uma porta, basta executar este comando.
kill -9 $(lsof -t -i:3000)
A diferença entre
pkill
ekill
é alguém processar argila. No kill você aplica um filtro. basta parar a porta que deseja.O
pkill
comando fecha todos os processos do nó.pkill -9 node
Use pkill para evitar vazamentos de memória que ocorrem ocasionalmente durante o desenvolvimento. se houver mais de um nó, ele mata todos eles.
O uso de scripts em package.json também é exemplificado.
fonte
Tente abrir o host local em seu navegador. Basta digitar:
localhost:3000
na barra de endereço.Se o aplicativo abrir, significa que o anterior
npm run
ainda está ativo. Agora, você pode apenas fazer alterações no código e ver os efeitos se estiver projetando o mesmo aplicativo ou se quiser executar outro aplicativo, basta ajustar o código (em index.js do aplicativo em execução anterior) um pouco e ( provavelmente atualize a guia do navegador) para fazê-lo travar;) ..... Agora vá executarnpm run start
novamente a partir do novo diretório do aplicativo. Espero que isto ajude! :)ou
Você pode abrir o Gerenciador de tarefas (WINDOWS_KEY + X> Gerenciador de tarefas) e verá a linha "Node.js: JavaScript do lado do servidor". Selecione isso e finalize a tarefa .... Deve funcionar agora !!
Caso contrário, altere o
.env
arquivo do seu aplicativo para incluirport:3002
e executar o novo aplicativo. Isso permitirá que você execute dois aplicativos separados em portas diferentes. Felicidades!!fonte
Espero que ajude
fonte
Simples em linux
fonte
Eu também encontrei o mesmo problema. A melhor maneira de resolver é (para Windows) :
Vá para o Gerenciador de Tarefas .
Role e encontre um processo de tarefa chamado. Node.js: JavaScript do lado do servidor
Termine esta tarefa em particular.
Ai está! Agora faça o npm start e funcionará como antes!
fonte
Para usuários do Windows, você pode usar a ferramenta CurrPorts para eliminar portas em uso facilmente
fonte
Pode ser um processo administrativo em execução em segundo plano e
netstat
não mostra isso.Use
tasklist | grep node
para encontrar o PID deste processo administrativo e entãokill PID
fonte
se você estiver usando o webstorm, certifique-se de que sua porta padrão não seja 3000 em arquivo -> configurações -> Compilar, Execução, Implementação -> Depurador E aí mudar
e defina-o como "63342" ou veja esta resposta Alterar porta WebStorm LiveEdit (63342)
fonte
Nos scripts package.json incluem:
Acredito que o problema para mim era o tempo que a porta antiga não estava fechando a tempo pelo nodemon para reiniciar. Eu experimentei o problema ao usar o multer.
fonte
Os métodos do servidor ou do app listen () podem ser adicionados em 2 lugares. Pesquise os métodos listen () no para as inicializações do aplicativo, por isso seu retorno como servidor iniciado na porta XXXX e a porta XXXX já em uso mensagem que vem lado a lado
fonte
Na minha situação, eu tinha acabado de começar a usar o VS Code e seguido um tutorial usando o Sequelize. No final, eu tinha um arquivo bin / www que continha o listen (). Eu não sabia sobre isso e estava executando meu aplicativo executando node app.js, quando não funcionou, adicionei ao servidor expresso coisas com .listen () (que funcionou bem).
Mas ao começar a usar o nodemon e o VSCode, ele foi apontado para bin / www e isso exigiu meu app.js.
Para encurtar a história, adicionei .listen () ao meu app.js e estava executando o app.js diretamente quando não deveria ter adicionado isso e executar bin / www.
fonte
No ubuntu, primeiro pegue o processo usando o número da porta: sudo lsof -i: 3000 então use o comando kill para encerrar o processo, por exemplo, se o PID do processo for 4493, use o comando: kill 4493 , para mac ou windows encontre o comando relacionado
fonte
Resolvi esse problema porque o MongoDB ou existe outro app que vc já executou antes nesta porta, então para resolver mate o processo do gerenciador de tarefas, ou apenas mude o número da porta de 3000 para qualquer outra.
fonte
É muito simples. Você pode corrigi-lo em 2 etapas fáceis.
Acontece que algum outro programa está usando essa variável. Normalmente, quando você inicia os react-scripts, ele procura uma variável de ambiente com esse título PORT.
fonte
Antes de executar o nodemon, inicie o mongod primeiro. Você nunca obterá esse erro. :)
fonte
verifique se há algum processo em execução na mesma porta digitando o comando:
Você pode encontrar o processo em execução na porta do respectivo nó e, em seguida, eliminar o nó
Se o problema persistir, basta matar todos os nós
fonte
Mata todas as portas em execução (mac):
fonte