Você constrói o aplicativo node.js com express v4.x e inicia seu aplicativo por npm start . Minha dúvida é como parar o aplicativo? Existe uma parada do NPM ?
EDIT para incluir o erro ao implementar npm stop
/home/nodetest2# npm stop
> nodetest2@0.0.1 stop /home/nodetest2
> pkill -s SIGINT nodetest2
pkill: invalid argument for option 's' -- SIGINT
npm ERR! nodetest2@0.0.1 stop: `pkill -s SIGINT nodetest2`
npm ERR! Exit status 2
--signal
. Useman pkill
para ler sobre pkill.Todas as outras soluções aqui dependem do sistema operacional. Uma solução independente para qualquer sistema operacional usa socket.io da seguinte maneira.
package.json
tem dois scripts:server.js - Seu material expresso usual vive aqui
server.stop.js
Teste
npm start
(para iniciar o seu servidor normalmente)npm stop
(isso irá parar o seu servidor em execução)O código acima não foi testado (é uma versão reduzida do meu código, meu código funciona), mas espero que funcione como está. De qualquer forma, ele fornece a direção geral a ser tomada se você quiser usar o socket.io para parar o seu servidor.
fonte
Quando tentei a solução sugerida, percebi que o nome do meu aplicativo estava truncado. Eu li na
process.title
documentação do nodejs ( https://nodejs.org/docs/latest/api/process.html#process_process_title ) e dizMeu aplicativo não usa nenhum argumento, então posso adicionar esta linha de código ao meu
app.js
e adicionar essas poucas linhas ao meu
package.json
arquivopara usar nomes de processos realmente longos.
npm start
e onpm stop
trabalho, é claronpm stop
que sempre encerrará todos os processos em execução, mas isso é bom para mim.fonte
Este é um problema de versão mintty, como alternativa, use cmd. Para encerrar o processo do servidor, basta executar este comando:
fonte
No MAC OS X (/ BSD): você pode tentar usar o comando lsof (list open files)
e entao
fonte
Verifique com netstat -nptl todos os processos
E simplesmente mata o processo pela referência PID .... No meu caso quero parar o 6231 / nodejs então executo o seguinte comando:
fonte
Aqui está outra solução que mistura ideias das respostas anteriores. Ele adota a abordagem de "processo de eliminação" enquanto trata da preocupação com a independência da plataforma.
Ele depende do pacote tree-kill para lidar com a eliminação da árvore de processos do servidor. Descobri que matar toda a árvore de processos é necessário em meus projetos porque algumas ferramentas (por exemplo
babel-node
) geram processos filhos. Se você só precisa matar um único processo, você pode substituir tree-kill com o built-inprocess.kill()
método .A solução é a seguinte (os primeiros dois argumentos para
spawn()
devem ser modificados para refletir a receita específica para executar seu servidor):build / start-server.js
build / stop-server.js
package.json
Observe que esta solução desconecta o script de inicialização do servidor (ou seja
npm start
, retornará imediatamente e não bloqueará até que o servidor seja interrompido). Se você preferir o comportamento de bloqueio tradicional, simplesmente remova ooptions.detached
argumento paraspawn()
e a chamada parachild.unref()
.fonte
Se você já tentou
ctrl + c
e ainda não funciona, você pode tentar isso. Isso tem funcionado para mim.Execute a linha de comando como administrador. Em seguida, execute o comando abaixo para encontrar o ID do processo (PID) que você deseja eliminar. Digite o seu número de porta em
<yourPortNumber>
netstat -ano | findstr :<yourPortNumber>
Então você executa este comando depois de identificar o PID.
taskkill /PID <typeYourPIDhere> /F
Parabéns a @mit $ ingh de http://www.callstack.in/tech/blog/windows-kill-process-by-port-number-157
fonte
Se for muito simples, basta matar o processo ..
fonte
Para a máquina Windows (estou no Windows 10), se o comando CTRL + C (Cancelar / Abortar) no cli não funcionar, a tela aparecerá assim:
Tente pressionar ENTER primeiro (ou qualquer tecla faria) e depois CTRL + C e o processo atual perguntaria se você deseja encerrar o trabalho em lote:
Talvez CTRL + C termine apenas o processo pai, enquanto npm start é executado com outros processos filho. Não tenho certeza porque você precisa apertar aquela tecla extra antes de CTRL + C, mas funciona melhor do que fechar a linha de comando e começar novamente.
Um problema relacionado que você pode querer verificar: https://github.com/mysticatea/npm-run-all/issues/74
fonte
Para ambientes de produção, você deve usar Forever.js
É tão útil para iniciar e parar o processo do nó que você também pode listar os aplicativos em execução.
https://github.com/foreverjs/forever
fonte
Você pode usar pm2
https://pm2.keymetrics.io/docs/usage/quick-start/
após a instalação basta digitar no terminal
pm2 start app.js
e depoispm2 stop 0
para parar o seu servidorfonte
Caso o seu arquivo json não tenha um script para parar o aplicativo, uma opção que utilizo é apenas pressionando ctrl + C no cmd.
fonte
Toda (3) solução é:
1- ctlr + C
2- no arquivo json escreva um script que pare
"scripts": {"stop": "killall -SIGINT este-nome-pode-ser-contanto-que-precisar-ser"},
* do que no comando write // npm stop //
3- Reinicie o pc
fonte
Você deve pressionar a combinação ctrl + z Meu sistema operacional é Ubuntu
fonte