npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@moblybr/middlewares-error-handler

v2.1.0

Published

Error Hanlder middleware

Downloads

157

Readme

@mobly/middlewares/error-handler

Middleware de tratamento de erros

Instalação

Para instalar o pacote:

npm i @moblybr/middlewares-error-handler

Para usar este middleware, importe-o no arquivo que for utilizá-lo:


const errorHandler = require('@moblybr/middlewares-error-handler')

Middleware Middy para Error Handler

Captura, trata e customiza erros na aplicação.
Repositório: https://bitbucket.org/mobly/mobly-middlewares-error-handler
Recomendamos uso do Middleware Error Handler na primeira/última posição da pilha de middlewares Middy.

Customização de erros

O Middleware vem com configurações básicas para repassar erros HTTP e montar erro 500 para as exceções não tratadas.
A aplicação pode customizar livremente o tratamento de erros HTTP e não-HTTP e sobrescrever esses padrões. O Middleware espera um objeto com ate 5 elementos: customHttpErrors, customLogger e customNonHttpErrors, customDlqErrors, explodeErrors.

CustomHttpErrors

É usado para customizar erros HTTP da aplicação. O objeto deve conter chave com o error.name padrão HTTP, statusCode e body com propriedade message. Por exemplo:

{
  InternalServerError: {
    statusCode: 500,
    body: { message: 'Erro interno de servidor' }
  },
  ForbiddenError: {
    statusCode: 403,
    body: { message: 'Acesso negado' }
  },
}

CustomHttpErrors com processamento customizado

Além de responder um erro estático é possível também receber o erro em uma função e manipulá-lo livremente. O objeto deve conter chave com o error.name padrão HTTP, função process e retornar um objeto com statusCode e body com propriedade message. Por exemplo:

{
  BadRequestError: {
    process (e) {
      if (e.message === 'Event object failed validation') {
        const messages = e.details.map(detail => detail.message)
        return {
          statusCode: 400,
          body: { message: messages.join(', ') }
        }
      }
      return {
        statusCode: 400,
        body: { message: e.message || 'Requisição mal formada' }
      }
    }
  }
}

CustomLogger

Como padrão o Middleware fazer um console.error como log. Para customizar o logger é possível passsar uma função. Por exemplo:

import Log from '@dazn/lambda-powertools-logger'
import epsagon from 'epsagon'

(err) => {
  Log.error(err.message, { date: new Date() }, err)
  epsagon.setError(err)
}

customNonHttpErrors

É possível manipular erros não-HTTP através da função customNonHttpErrors. Ela deve retornar um objeto com statusCode e body com propriedade message. Por exemplo:

(err) => {
  console.error(err)
  return { InternalServerError: { statusCode: 500, body: { message: 'Internal Server Error' } } }
}

customDlqErrors

E possivel tambem configurar uma fila sqs dlq para enviar erros selecionados através de um objeto chamado customDlqErrors, para isso é necessário dois parâmetros específicos typeErrors em forma de um array de objetos contendo as propriedades statusCode com o numero do codigo de erro ou uma string 'noHttp' para erros não http e url com a url da fila sqs específica de envio do erro que deseja enviar para a dlq, podemos também passar urlDefault propriedade para setar uma url de uma fila sqs padrão para os status codes que não forem expecificados uma url de destino. Por exemplo:

Importante

E necessario passar ao menos uma url de uma fila sqs para poder ser enviado, e é necessário as permissões iam adequadas para a lambda que ira realizar o envio para o dlq.

const customDlqErrors = {
  urlDefault: 'uri padrão',
  typeErrors: [
    {statusCode: 400, url: 'http://xxx'}
    {statusCode: 'noHttp'} // ele enviara qualquer erro não http para a urlDefault config
    ]
}

explodeErrors

Esse é um parametro para explodir os erros e não responder eles tratado. Exemplo:

explodeErrors: true
Importante

Quando se tratar de um evento sqs a lamda retorna o erro para a mesma fila sqs por padrão, para realizar as tentativas de retry antes de estourar o erro para a fila dlq.

Exemplo de código

Os handlers do boiler plate usam o Middleware Error Handler com exemplo de configurações customizadas