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();
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'
throw new HTTPClientError({ httpCode: 400, message: { error: "bad request" }});
throw new HTTPClientError({ message: { 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!" }
Source Code/ Reporting issue
Go to https://github.com/vijayrathore8492/havildar