Introduction
A hapi plugin to return an error view for web requests, providing more details of the issue. Also, provides the
error stacktrace within the browser and you can skip the extra look at your command line to catch the issue.
You can choose Youch to handle your error reporting by using the useYouch: true
option. hapi-dev-errors
integrates
seamlessly with Youch and delegates the error handling, if activated. The view will look like this:
Requirements
This plugin uses async/await which requires Node.js v8 or newer.
Do you use hapi v16 (or lower)?
Use the 1.3.2
release of hapi-dev-errors
with hapi v16. Any later version is only compatible with hapi v17 and later.
Installation
Add hapi-dev-errors
as a dependency to your project:
npm i -S hapi-dev-errors
npm i hapi-dev-errors
Examples
Check out the examples directory and get
an impression on how to configure hapi-dev-errors
with the individual plugins options and how to customize the
error view.
Usage
hapi-dev-errors
is disabled by default to avoid leaking sensitive error details during production.
Enable the plugin by define a "truthy" value for the showErrors
option.
The most straight forward way to register the hapi-dev-errors
plugin:
server.register({
plugin: require('hapi-dev-errors'),
options: {
showErrors: process.env.NODE_ENV !== 'production'
}
}).then(() => {
}).catch(err => {
})
Plugin Registration Options
The following plugin options allow you to customize the default behavior of hapi-dev-errors
:
- showErrors:
(boolean)
, default: false
— by default, the plugin is disabled and keeps hapi's default error handling behavior - useYouch:
(boolean)
, default: false
— use Youch to handle and display the error instead of using hapi-dev-error
’s default handling - template:
(string)
, no default — provide the template name that you want to render with h.view(template, errorData)
server.register({
plugin: require('hapi-dev-errors'),
options: {
showErrors: process.env.NODE_ENV !== 'production',
template: 'my-error-view'
}
}).then(() => {
}).catch(err => {
})
Provided Values for Your Custom Error View
hapi-dev-errors
supports the template
option while registering the plugin. Provide a template name to
use your personal error template and not the default one shipped with hapi-dev-errors
. In case you pass a string
value for the template name, the view will be rendered with h.view(template, errorData).code(500)
.
Available properties to use in your custom error view:
title
: error title like Internal Server Error
statusCode
: HTTP response status code (always 500)message
: error message, like Uncaught error: h.view(...).test is not a function
method
: HTTP request method, like GET
url
: URL request path, like /signup
headers
: HTTP request headers object, in key-value formatpayload
: HTTP request payload, only available for HTTP methods other than GET
, in key-value formatstacktrace
: error stacktrace
Feature Requests
Do you miss a feature? Please don’t hesitate to
create an issue with a short description of your
desired addition to this plugin.
Links & Resources
Contributing
- Create a fork
- Create your feature branch:
git checkout -b my-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request 🚀
License
MIT © Future Studio
futurestud.io ·
GitHub @fs-opensource ·
Twitter @futurestud_io