-
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.
npm install --save havildar
const havildar = require('havildar');
OR
import havildar from 'havildar';
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.
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" }
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!" }