Estou testando um servidor escrito em nodejs no Windows 7 e quando tento executar o testador na linha de comando, recebo o seguinte erro
Error: listen EADDRINUSE
at errnoException (net.js:614:11)
at Array.0 (net.js:704:26)
at EventEmitter._tickCallback (node.js:192:40)
como posso corrigi-lo sem reiniciar?
sudo killall node
pode ser útilRespostas:
Isso significa que o endereço ao qual você está tentando ligar o servidor está em uso. Tente outra porta ou feche o programa usando essa porta.
fonte
node app.js
e o interrompi com Ctrl + C, mas comecei a ter o problema EADDRINUSE após a primeira vez em que useinpm start
, então parece que a solução real seria usar algo diferente de Ctrl + C para desligar após o usonpm start
.npm start
script pode ser mais de um programa de nó, ou um programa de nó executado em segundo plano, ou o programa pode ter processos filhos que usam essa porta.ps aux | grep node
, encontrar o ID do processo (segunda coluna) e simplesmente matá-lo comkill <pid>
(a minha erakill 18762
).Corre:
Você receberá algo como:
Então faça:
fonte
kill -15 60778
seria muito melhor, pois iria permitir que o processo para sair graciosamente (SIGTERM
) em vez se o envio de umaSIGKILL
No Linux (derivados do Ubuntu pelo menos)
é mais fácil que este formulário.
Nem funcionará se você tiver um filho órfão segurando a porta. Em vez disso, faça o seguinte:
Se a porta estiver sendo mantida, você verá algo assim:
Agora mate por pid:
fonte
<pid>/<parent>
eu recebo-
O comando a seguir fornecerá uma lista dos processos do nó em execução.
Para liberar essa porta, pare o processo usando o seguinte.
fonte
| grep -v grep
para excluir ogrep
processo.pidof node
pidof
foi facilmente instalado para mim no OSX com homebrewbrew install pidof
Você está recebendo o erro
EADDRINUSE
porque a porta que seu aplicativo deseja usar está ocupada por outro processo. Para liberar essa porta, você precisa finalizar o processo de ocupação.Como você está no Windows , você pode finalizar o processo usando o prompt de comando (
cmd
). Com ocmd
você pode descobrir o ID do processo (PID) do aplicativo de bloqueio. Você precisará do PID para finalizar / interromper o processo.Aqui está um guia passo a passo ...
Encontre todos os processos em execução em uma porta especificada (neste exemplo, Porta é "3000"):
O
netstat
comando listará todos os processos em execução na porta especificada. Na última coluna dosnetstat
resultados, você pode ver osPID
s (neste exemplo, o PID é "8308"). Você pode descobrir mais sobre um específicoPID
executando o seguinte comando:Se você deseja finalizar um processo, você pode fazer isso com o seguinte comando usando o seu
PID
(neste exemplo, o PID é "8308"):Captura de tela
fonte
Quando você receber um erro Erro: ouça EADDRINUSE,
Tente executar os seguintes comandos do shell:
I
grep
ed para 8080, porque eu sei que meu servidor está executando na porta 8080. (static
me diz quando eu iniciá-lo: 'servindo no '' http://127.0.0.1:8080 '.) Você pode ter que procurar um diferente porta.fonte
suponha que seu servidor esteja sendo executado em
port 3000
depois desse uso
kill -9 <pid>
no caso acima
sudo kill -9 11716
fonte
use abaixo do comando para matar um processo em execução em uma determinada porta - 3000 neste exemplo abaixo
fonte
Uma solução possível que funcionou para mim foi simplesmente fechar a janela no navegador onde eu tinha o script " http: // localhost: 3000 / " correspondente em execução.
fonte
Verifique o ID do processo
sudo lsof -i: 8081
Do que matar o processo em particular
sudo kill -9 2925
fonte
Quando você receber um erro
Abra o prompt de comando e digite as seguintes instruções:
depois disso, reinicie a interface do telefone.
Se você quiser saber qual ID de processo o phonegap está usando, abra TASK MANAGER e veja o cabeçalho PID da coluna e localize o número PID.
fonte
O
killall -9
nó mencionado acima , sugerido por Patrick, funciona conforme o esperado e resolve o problema, mas você pode ler a parte de edição desta mesma resposta sobre por quekill -9
talvez não seja a melhor maneira de fazê-lo.Além disso, convém direcionar um único processo, em vez de matar cegamente todos os processos ativos.
Nesse caso, primeiro obtenha o ID do processo (PID) do processo em execução nessa porta (por exemplo, 8888):
Isso retornará algo como:
(ESCUTE) Então faça (ps - na verdade não. Por favor, continue lendo abaixo):
fonte
Isso funciona no Mac:
Passo 1.
O comando acima fornecerá os IDs do processo que atualmente mantêm a porta.
Passo 2.
fonte
você pode alterar sua porta no app.js ou no arquivo de configuração do seu projeto.
padrão ('porta', 80)
e para ver se a porta 80 já está em uso, você pode fazer
netstat -antp | grep 80
netstat -antp | nó grep
você pode querer ver se o processo do nó já está em execução ou não.
nó ps -ef | grep
e se você já estiver em execução, poderá matá-lo usando
nó killall
fonte
Criei 2 servidores, ouvindo na mesma porta 8081, executando o mesmo código, enquanto aprendia
A primeira falha na criação do servidor funcionou A segunda falha na criação do servidor com EADDRINUSE
Atrasos no retorno de chamada do node.js. podem ter sido os motivos por que não funcionaram ou a 2ª criação do servidor teve exceção e o programa foi encerrado; portanto, o 1º servidor também está fechado
Dica de problema com 2 servidores, obtive de: Como corrigir erro: ouça EADDRINUSE enquanto estiver usando o nodejs?
fonte
Erro: ouça EADDRINUSE para resolvê-lo no Ubuntu, execute no terminal
netstat -nptl
e, depois disso,kill -9 {process-number}
este comando é para matar o processo do nó e agora você pode tentar executar novamente o comando node server.jsEx
listen EADDRINUSE ::: 8080
netstat -nptl
tcp6 0 0 ::: 9000 ::: * LISTEN 9660 / java
tcp6 0 0 ::: 5800 ::: * LISTEN -
tcp6 0 0 ::: 5900 ::: * LISTEN -
tcp6 0 0 ::: 8080 :: : * LISTEN 10401 / nó
tcp6 0 0 ::: 20080 ::: * LISTEN 9660 / java
tcp6 0 0 ::: 80 ::: * LISTEN -
tcp6 0 0 ::: 22 ::: * LISTEN -
tcp6 0 0 ::: 10137 ::: * LISTEN 9660 / java
kill -9 10401
fonte
netstat
recebe parâmetros diferentes.netstat -a -p tcp -b -v
produziria o nome do processo.Eu tenho o nó vermelho instalado no meu Mac e no meu Raspberry Pi. Teve exatamente o mesmo problema e fazer 'killall' não ajudou. Depois que desliguei o Raspberry Pi e reiniciei o computador, ele funcionou bem.
fonte
Pode ser possível que você tenha tentado executar o comando npm start em duas guias diferentes. Você não pode executar o npm start quando ele já estiver em execução em alguma guia. Verifique-o uma vez.
fonte
Para quem já tentou todas as opções acima, mas ainda não consegue encontrar o processo de rouge, tente todas novamente, mas certifique-se de incluir "sudo" na frente dos comandos.
fonte
Se você gosta mais da interface do usuário, encontre o processo Node.js no gerenciador de tarefas do Windows e mate-o.
fonte
O nó ps -ef | grep encontra o app.js, mata o pid do app.js
fonte
simplesmente mate o nó como pkill -9 no terminal do ubantu do que o nó inicial
fonte
Você precisará matar a porta tentando usar o seguinte comando no terminal
fonte
[RESOLVIDO]
Pode ser tarde demais, mas está funcionando como um encanto.
Você precisa
pm2
estar instaladoPara parar o servidor em execução atual (server.js):
fonte
Eu resolvi esse problema adicionando abaixo no meu package.json por matar o PORT - 4000 ativo (no meu caso) em execução no WSL2 / Linux / Mac
Fonte
fonte
Para matar o servidor do nó, primeiro execute este comando no seu terminal:
top
id
da janela anterior:PID number -9 kill
agora você matou o servidor do nó e tente executar o aplicativo novamente.fonte
Eu usei o comando
netstat -ano | grep "portnumber"
para listar o número da porta / PID para esse processo. Então, você pode usartaskkill -f //pid 111111
para interromper o processo, sendo o último valor o pid encontrado no primeiro comando.Um problema que encontro às vezes é o reaparecimento do nó, mesmo depois de encerrar o processo, por isso tenho que usar o bom e velho gerenciador de tarefas para eliminar manualmente o processo do nó.
fonte
Na janela, execute este comando:
fonte