Livrando-se do tratamento de erros com NodeJS + Express

( Jaydipsinh Vaghela) (1º de setembro de 2020)

Foto por Erik Mclean em Unsplash

O tratamento de erros em Javascript é pequeno um pouco chato quando você está apenas começando. Hoje vou explicar como lidar com erros com NodeJS + Express e diferentes maneiras de fazer isso.

Estou escrevendo este artigo porque, quando dou uma entrevista para um papel júnior, eu normalmente pergunta como lidar com uma rota que não existe ou como lidar com os erros ao criar uma API com NodeJS? Muitos desenvolvedores não conseguem responder a esta pergunta. Portanto, este artigo é especialmente para desenvolvedores iniciantes ou juniores.

Usaremos NodeJS (v12.18. *), Express (v4.17. *) E ESLint com Diretriz de estilo de codificação do Airbnb . Anexei o link do Github para sua referência, caso deseje revisá-lo.

Aqui estão os itens que abordaremos:

  • Entenda como express define rotas e seu mapeamento
  • Crie middleware expresso para lidar com API quando nenhuma rota existe
  • Entenda o que acontece se o código gerar erros aleatórios
  • Crie middleware expresso para lidar com qualquer tipo de erro

Mecanismo de rota expressa & Nenhuma rota existe middleware

Nós pode adicionar uma rota para expressar usando o método app.use() ou express.Router(). Quando usamos este método, express segue a abordagem de cima para baixo para adicionar a lista de rotas registradas. Portanto, quando chamamos uma API, o servidor começa a encontrar a rota correspondente de cima para baixo. Durante esse processo, ele atende à solicitação com a primeira rota correspondente. Você pode criar a mesma rota várias vezes com o expresso, mas com essa abordagem a primeira rota sempre é executada para atender à solicitação.

Se alguém tentar acessar um endpoint de API que não existe, você obtém um erro inesperado do servidor. Para a melhor prática, devemos cuidar desse tipo de situação. Não podemos lançar um erro inesperado para o front-end se considerarmos isso de uma perspectiva UX. Para lidar com tal situação, precisamos usar o middleware expresso que vai cuidar de uma situação nenhuma rota existe . Aqui está um exemplo de código.

Não existe middleware de rota

Este middleware deve ser a última instrução de seu código de definição de rota. Qualquer outra rota definida após este middleware nunca será executada, então a posição deste middleware é muito importante. Quando o express começa a procurar uma rota e não encontra nenhuma rota correspondente, o express executa o código deste middleware onde podemos tomar a ação apropriada. Basicamente, respondemos com uma mensagem de erro adequada para que o cara do front-end possa tomar uma ação apropriada.

Erro na lógica de negócios & como lidar com isso

A experiência do usuário é a chave para o sucesso de qualquer aplicativo da web. Sempre queremos a interação do usuário com uma vibração positiva, mesmo com erros! Estamos escrevendo toneladas de código todos os dias e não é possível escrever o código sem erros. Especialmente quando você está no nível júnior, há mais chances de erros. Ao lidar com o expresso para a API, se nosso código travar normalmente, todo o objeto de erro é passado como resposta à solicitação, que não é válida em nenhuma circunstância. Precisamos lidar com travamentos de código de forma que possamos passar a mensagem de erro apropriada para o usuário. Aqui está o código cortado para adicionar middleware para lidar com qualquer erro no Express.

Erro ao lidar com middleware

Usando isso, os erros gerados dentro da lógica de negócios serão retornados dentro do objeto de erro. O objeto de erro contém o rastreamento de pilha completo sobre o erro. Podemos obter o status do objeto de resposta para tratar as informações adequadamente. Se nenhum código de status for encontrado, retornamos o código de status padrão 500, o que significa que algo deu errado no servidor. Sempre há uma mensagem dentro do objeto de rastreamento de erros em um formato legível para descrever o erro.

Eu gostaria de adicionar algumas coisas avançadas aqui ao considerar a construção de produção. Devemos enviar um alerta a algum lugar para tomar as medidas adequadas em cada erro.Normalmente, eu prefiro enviar um alerta por e-mail para a equipe de desenvolvedores ou você pode usar um software de rastreamento de erros como o BugSnag para rastrear todos os tipos de coisas.

Abaixo está um snippet de código com código funcional para que você possa executá-lo localmente e brincar com ele para obter um melhor entendimento. Você também pode encontrar o acesso ao código completo no repo com o código de trabalho.

GitHub Link: https://github.com/Jaydipsinhv/express-demo

Código de trabalho completo com tratamento de erros

Espero que este artigo ajude o desenvolvedor júnior a obter mais clareza com tratamento de exceções.