Render nice error pages with Express.
This library requires the following to run:
- Node.js 18+
Install with npm:
npm install @rowanmanning/render-error-page
Load the library into your code with a require
call:
const renderErrorPage = require('@rowanmanning/render-error-page');
Create the error rendering middleware and add it as the very last one to your Express app (more details available in this Express guide):
const express = require('express');
const renderErrorPage = require('@rowanmanning/render-error-page');
const app = express();
app.get('/', (request, response, next) => {
next(new Error('Oops'));
});
// Your error page!
app.use(renderErrorPage());
renderErrorPage
relies on the Express built-in rendering method: response.render
. You'll need to create an error
view in your Express application. Where and how you do this depends on what your view rendering setup is. Normally it'll be a file like:
views/error.html
Replace .html
above with the correct file extension for your views. Once you've done this, you can access the following view data:
-
error.code
: the value of thecode
property of the error, if present -
error.message
: the actual error message -
error.name
: the value of thename
property of the error, e.g.Error
orTypeError
-
error.stack
: the full error stack (if made available based on options) -
error.status
: the HTTP status code of the error (taken from the original error'sstatusCode
orstatus
properties) -
error.statusCode
: alias oferror.status
-
error.statusMessage
: the HTTP status message which corresponds toerror.status
, e.g. an error status of404
would result inNot Found
An example in Handlebars:
<h1>Error {{error.statusCode}}</h1>
<p>{{error.message}}</p>
{{#if error.stack}}
<pre>{{error.stack}}</pre>
{{/if}}
If your template cannot be rendered for some reason, then a basic fallback template will be used instead.
You can configure the middleware using a few different options:
app.use(renderErrorPage({
exampleOption: true
}));
The available options are:
-
errorView
: the name of the view to render when an error occurs, relative to the Expressviews
directory. Defaults to"error"
-
includeErrorStack
: a boolean indicating whether to include the error stack in the output. Defaults tofalse
if theNODE_ENV
environment variable is set to"production"
, ortrue
otherwise
A new major version of this project is released if breaking changes are introduced. We maintain a migration guide to help users migrate between these versions.
The contributing guide is available here. All contributors must follow this library's code of conduct.
Licensed under the MIT license.
Copyright © 2019, Rowan Manning