A custom error handler for a node.js and express application.
npm install @josephdaw/error-handler
const { errorhandler, CustomError} = require('@josephdaw/error-handler');
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());
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);
});
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);
});
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);
}));
Please report any bugs or feature requests via GitHub Issues.
Please report any security issues to dev@josephdaw.com. Find more information in our Security Policy
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
Every significant change is documented in the changelog file.
This project is released under the MIT License.