havildar
v1.0.2
Published
A Error middleware for express
Downloads
367
Maintainers
Readme
Havildar - An Error middleware for express js
Wyy to Use
It has inbuilt HTTPClientError class, which you can use to create custom error classes.
It has default 404 handler.
It catches all run time errors and sends proper HTTP compatible response.
It saves your process from unwanted restarts.
By default it logs errors with
console.error
, however you can provide your own logger function that will be called when error occurred.Supports REST Api error codes.
Setup
Install
npm install --save havildar
How to use
add to your express app
const havildar = require('havildar');
OR
import havildar from 'havildar';
Add as middleware in your server file
const router = express();
/**
* Add error handler after routes
**/
havildar(router);
Or to use with custom logger function
havildar(router, logger.error);
This will enable havildar
to catch and render all errors.
IMP: Set NODE_ENV=production
to avoid sending error stack trace of unknown errors in response.
Throw client error from anywhere in the code
import HTTPClientError from 'havildar/lib/HttpClientError'
/**
* Code in between
**/
throw new HTTPClientError({ httpCode: 400, message: { error: "bad request" }});
//Status: 400 ; Response { error: "bad request" }
// OR with 200 http status
throw new HTTPClientError({ message: { code: "1232", error: "bad request" }});
//Status:200 ; Response { code: "1232", error: "bad request" }
Use Error classes to create custom errors
import HTTPClientError from 'havildar/lib/HttpClientError'
OR
const HTTPClientError = require('havildar/lib/HttpClientError');
Create custom Error class.
import HTTPClientError from 'havildar/lib/HttpClientError'
export class HTTP400Error extends HTTPClientError {
constructor(message: string | object = "Bad Request") {
super({ httpCode: 400, message: message });
}
}
Throw anywhere suitable. It will be caught, logged and rendered by havildar
.
throw new HTTP400Error({ error: "invalid email address!" })
You API response will be rendered correctly with HTTP status 400.
{ "error" : "invalid email address!" }