Skip to content

alvarolorentedev/express-exception-handler

Repository files navigation

logomakr_6nl700

All Contributors Build Status codecov npm GitHub license Maintenance

Motivation

This package was created to add a general way to handle exception for express application with the expectation to make it simpler to handle all possible requests.

Installation

add it to your project with npm install express-exception-handler or yarn add express-exception-handler

Use

there are 2 different ways to integrate the main functionality of this package, either by adding the handle that gets injected to the router framework

var exceptionHandler = require('express-exception-handler')
exceptionHandler.handle()
const app = require('express')()

or by wraping manually the routes

var wrap = require('express-exception-handler').wrap
router.post('/', wrap(async (req, res) => {
    ...
}))

it also integrates an extended class from Error that contains a message and a status that can be used to pass diferent information to the error handle

var httpError = require('express-exception-handler').exception
router.post('/', async (req, res) => {
    throw new HttpError('Great Message', 400, "{Response: awesome}")
}))

last but not least it also contains a middleware that can be added directly to express that handles the previous named errors.

var middleware = require('express-exception-handler').middleware
const app = require('express')()
app.use(middleware)

Options

The handle and the wrap function allow configuration parameters to be passed. The default is:

{
  nextOnce: true,
  defaultJsonResponse: false,
}
  • nextOnce: makes sure next can only be called once
  • defaultJsonResponse: runs res.json by default when the internally returned value is an object.

Logo

Arrows graphic by madebyoliver from Flaticon is licensed under CC BY 3.0. Check out the new logo that I created on LogoMaker.com https://logomakr.com/6nL7006nL700

Contributors

Thanks goes to these wonderful people (emoji key):


Brad Reed

💻

Oren Zomer

💻

Tu Nguyen

🤔

This project follows the all-contributors specification. Contributions of any kind welcome!