Como escutar e tratar eventos com o módulo process do Node.js

Clara Tersi
Nov 7 · 3 min read

O objeto process é uma variável global que possibilita controlar e ter informações sobre o processo em execução do Node.js.

Photo by Safar Safarov on Unsplash

Saber trabalhar com este módulo é importante para conseguir:

  • Ter um melhor conhecimento sobre os estados do processo das nossas aplicações;
  • Tratar melhor os erros lançados;
  • Conseguir criar um desligamento adequado caso a execução precise ser encerrada.

Como o process é uma instância de EventEmitter , conseguimos escutar seus eventos chamando .on . Este artigo lista os eventos de maior destaque, e a lista completa pode ser encontrada na documentação oficial do Node.js.


exit

O processo será encerrado assim que todos os listeners do evento exit terminarem de executar, e nesse ponto não existe nenhuma ação que possa ser feita para impedir que o processo termine.

Escutando o evento 'exit'

Dentro do listener de um evento exit devemos apenas executar código síncrono, pois o processo será encerrado imediatamente. Qualquer processamento que ainda estiver enfileirado para ser executado pelo loop de eventos será abandonado.

warning

Escutando o evento 'warning'

uncaughtException

Escutando a uma uncaughtException

Cuidado ao sobrescrever o comportamento padrão deste evento. Uma exceção não tratada significa que a aplicação está em um estado não definido ou conhecido. Fazer com que ela continue a executar pode causar problemas não previstos. Na documentação do Node.js existe um analogia bem interessante sobre isso:

Tentar continuar a execução normalmente após uma exceção não tratada é similar a desligar seu computador durante uma atualização puxando o plugue da tomada — 9 em cada 10 vezes não vai acontecer nada — mas na décima vez, o sistema será corrompido.

Então atenção com este evento:

  • Este evento deve ser usado para fazer uma limpeza síncrona dos recursos alocados antes de finalizar o processo.
  • Qualquer exceção que for lançada dentro da função handler desse evento não será tratada, o processo será encerrado com algum código de erro, e o stack será exibido.
  • Devemos monitorar nossa aplicação com ferramentas externas para pegar esse tipo de erro, e reiniciar o processo quando necessário.

unhandledRejection

Monitorar esse evento nos ajuda a enxergar as promises com rejeições não tratadas.

Lidando com rejeições não tratadas

SIGINT

No caso desse evento, é emitido quando tentamos finalizar o processo da aplicação Node.js apertando Ctrl+C no terminal.

Lidar com esse evento nos permite também fazer uma limpeza dos recursos utilizados antes de encerrar o processo.

Escutando um SIGINT

SIGTERM

Também é importante escutarmos esse evento, implementando uma função que lide com a limpeza de todos os recursos pendentes.

Tratando um evento SIGTERM

Conhecer sobre esses eventos leva a um melhor entendimento de como nossa aplicação está funcionando, e para que seja finalizada de maneira mais limpa quando seu processo for encerrado.

gruponewway

Relacionamento Humano, Digital & Inteligente

Clara Tersi

Written by

gruponewway

Relacionamento Humano, Digital & Inteligente

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade