havildar

A Error middleware for express

Usage no npm install needed!

<script type="module">
  import havildar from 'https://cdn.skypack.dev/havildar';
</script>

README

Havildar - An Error middleware for express js

Wyy to Use

  1. It has inbuilt HTTPClientError class, which you can use to create custom error classes.

  2. It has default 404 handler.

  3. It catches all run time errors and sends proper HTTP compatible response.

  4. It saves your process from unwanted restarts.

  5. By default it logs errors with console.error, however you can provide your own logger function that will be called when error occurred.

  6. 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!" }

Source Code/ Reporting issue

Go to https://github.com/vijayrathore8492/havildar