Beautiful, spec-compliant error reporting for express.
This express middleware simplifies debugging errors in express applications by presenting errors in a developer-friendly way.
Features:
- Beautiful HTML error reports thanks to youch
- Respects the
Accept
HTTP header - Hides sensitive information when running in production
- Compatible with other error middleware (custom error pages, custom error logging, ...)
npm install express-youch
const { errorReporter } = require('express-youch');
app.use(errorReporter());
Add custom links to the error report.
app.use(errorReporter({
links: [
({message}) =>{
const url = `https://stackoverflow.com/search?q=${encodeURIComponent(`[adonis.js] ${message}`)}`;
return `<a href="${url}" target="_blank" title="Search on stackoverflow">Search stackoverflow</a>`;
}
]
}));
When running in production (ie. when the NODE_ENV
environment variable is set to production
.), express-youch
will delegate HTML errors to the next error reporting middleware. Here is a basic example:
const { errorReporter } = require('express-youch');
// First, pass the errors to the error reporter
app.use(errorReporter());
// Then add some custom handling logic
app.use(function (error, req, res, next) {
if (!res.headersSent) {
// If we get to this point, that means express-youch decided to delegate response rendering to the
// next handler in the chain. You can safely assume the client wants an HTML response here.
res .status(error.statusCode)
.render('error-page', { error });
} else {
next(error);
}
});
The error object contains the properties statusCode
and message
, which you may use to create different error pages for different error types.
You should us a combination of an asynchronous express router such as this one and the async/await syntax to make sure no errors leak outside of your control. Read this blog post to learn more about error handling in express.