# @rowanmanning/render-error-page

> Render nice error pages with Express

Latest version **7.1.0** (published 2025-05-21) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install @rowanmanning/render-error-page
pnpm add @rowanmanning/render-error-page
yarn add @rowanmanning/render-error-page
bun add @rowanmanning/render-error-page
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 7.1.0 |
| Published | 2025-05-21 |
| First published | 2019-10-18 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | 20.x \|\| 22.x \|\| 24.x |
| Dependencies | 1 |
| Unpacked size | 8.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Rowan Manning |
| Maintainers | rowanmanning |
| Keywords | error, express, render |

## Links

- npm: https://www.npmjs.com/package/@rowanmanning/render-error-page
- Repository: https://github.com/rowanmanning/render-error-page
- Issues: https://github.com/rowanmanning/render-error-page/issues
- npm.io page: https://npm.io/package/@rowanmanning/render-error-page

## Dependencies (1)

- [@rowanmanning/get-error-http-status](https://npm.io/package/@rowanmanning/get-error-http-status.md) ^4.1.1

## Alternatives

- [@sentry/react-native](https://npm.io/package/@sentry/react-native.md) — 2.6M weekly downloads
- [@ardatan/aggregate-error](https://npm.io/package/@ardatan/aggregate-error.md) — 708.1K weekly downloads
- [custom-error-generator](https://npm.io/package/custom-error-generator.md) — 2.0K weekly downloads
- [@technik-sde/prosemirror-recreate-transform](https://npm.io/package/@technik-sde/prosemirror-recreate-transform.md) — 1.5K weekly downloads
- [@suchipi/error-utils](https://npm.io/package/@suchipi/error-utils.md) — 78 weekly downloads

## Recent versions

- 7.1.0 (latest) — 2025-05-21
- 7.0.1 — 2025-03-30
- 7.0.0 — 2025-03-08
- 6.2.4 — 2025-01-22
- 6.2.3 — 2024-09-01
- 6.2.2 — 2024-07-27
- 6.2.1 — 2024-07-07
- 6.2.0 — 2024-06-23
- 6.1.0 — 2024-01-30
- 6.0.2 — 2024-01-17
- 6.0.1 — 2023-11-22
- 6.0.0 — 2023-09-11
- 5.0.5 — 2023-07-25
- 5.0.4 — 2023-07-24
- 5.0.3 — 2023-04-26
- … 24 more at https://npm.io/package/@rowanmanning/render-error-page/versions

## README

# @rowanmanning/render-error-page

Render nice error pages with [Express](https://expressjs.com).

* [Requirements](#requirements)
* [Usage](#usage)
  * [Options](#options)
* [Migration](#migration)
* [Contributing](#contributing)
* [License](#license)


## Requirements

This library requires the following to run:

  * [Node.js](https://nodejs.org/) 20+


## Usage

Install with [npm](https://www.npmjs.com/):

```sh
npm install @rowanmanning/render-error-page
```

Load the library into your code with a `require` call:

```js
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](https://expressjs.com/en/guide/error-handling.html)):

```js
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 the `code` property of the error, if present

  * **`error.message`:** the actual error message

  * **`error.name`:** the value of the `name` property of the error, e.g. `Error` or `TypeError`

  * **`error.stack`:** the full error stack (if made available based on [options](#options))

  * **`error.status`:** the HTTP status code of the error (taken from the original error's `statusCode` or `status` properties)

  * **`error.statusCode`:** alias of `error.status`

  * **`error.statusMessage`:** the HTTP status message which corresponds to `error.status`, e.g. an error status of `404` would result in `Not Found`

An example in [Handlebars](https://handlebarsjs.com/):

```html
<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:

```js
app.use(renderErrorPage({
    exampleOption: true
}));
```

The available options are:

  * **`errorView`:** the name of the view to render when an error occurs, relative to the Express `views` directory. Defaults to `"error"`

  * **`includeErrorStack`:** a boolean indicating whether to include the error stack in the output. Defaults to `false` if the `NODE_ENV` environment variable is set to `"production"`, or `true` otherwise


## Migration

A new major version of this project is released if breaking changes are introduced. We maintain a [migration guide](docs/migration.md) to help users migrate between these versions.


## Contributing

[The contributing guide is available here](docs/contributing.md). All contributors must follow [this library's code of conduct](docs/code_of_conduct.md).


## License

Licensed under the [MIT](LICENSE) license.<br/>
Copyright &copy; 2019, Rowan Manning

---
_Source: https://npm.io/package/@rowanmanning/render-error-page · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
