@rowanmanning/render-error-page
v6.2.3
Published
Render nice error pages with Express
Downloads
13
Readme
@rowanmanning/render-error-page
Render nice error pages with Express.
Table of Contents
Requirements
This library requires the following to run:
- Node.js 18+
Usage
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 presenterror.message
: the actual error messageerror.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.
Options
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
Migration
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.
Contributing
The contributing guide is available here. All contributors must follow this library's code of conduct.
License
Licensed under the MIT license. Copyright © 2019, Rowan Manning