@josephdaw/error-handler
v1.2.2
Published
a custom error handler for a node.js and express application.
Downloads
3
Maintainers
Readme
Error Handler
Table of Contents
Description
A custom error handler for a node.js and express application.
Installation
Using npm
npm install @josephdaw/error-handler
Usage
Importing
const { errorhandler, CustomError} = require('@josephdaw/error-handler');
Basic Usage
In your express application, add the error handler as the last middleware.
const errorhandler = require('@josephdaw/error-handler');
const express = require('express');
const app = express();
// ... other middleware
app.use(errorhandler());
Using with a Custom Logger
You can pass a custom logger to the error handler. The logger must have a log
method that accepts a string. In the example below, we are using a custom logger package. You can create your own custom logger, or just pass in a generic logger such as winston or pino.
const logger = require('@josephdaw/logger');
const errorhandler = require('@josephdaw/error-handler');
const express = require('express');
const app = express();
// ... other middleware
app.use((err, req, res, next) => {
errorHandler(err, req, res, next, logger);
});
Using with a Custom Error Class
You can pass a custom error to the error handler. The error must be an instance of the CustomError class. In the example below, we are using a custom error package. You can create your own custom error, or just pass in a generic error such as the built in Error class.
const { CustomError } = require('@josephdaw/error');
app.all('*', (req, res, next) => {
const err = new CustomError('Route Not Found', 404);
next(err);
});
Handling Async Errors
You can use the error handler to handle async errors. In the example below, we are using the asyncErrorHandler package to wrap our async route handlers. This will throw the error back to our global error handler.
const { asyncErrorHandler } = require('@josephdaw/error-handler');
app.get('/async', asyncErrorHandler(async (req, res, next) => {
const data = await getData();
res.json(data);
}));
Issues and Requests
Please report any bugs or feature requests via GitHub Issues.
Security
Please report any security issues to [email protected]. Find more information in our Security Policy
Contributing
All development of this project happens through GitHub. We welcome constructive collaboration from the community to help implement new features or fix bugs. For more information please read our Contribution Guide
Changelog
Every significant change is documented in the changelog file.
License
This project is released under the MIT License.