Create HTTP errors for Express, Koa, Connect, etc. with ease. This is a drop-in replacement for the normal http-errors
only with zero dependancies and 50% less memory usage (give or take).
Normal http-errors doesn't care about the order of arguments but would throw a deprecated error if status was put after the message:
var createError = require('http-errors')
// The following would throw deprecated
createError('Not found', 404) // Should be: createError(404, 'Not Found')
The http-errors-lite takes on this more strictly and cares about ordering more.
var createError = require('http-errors-lite')
// All of the following will work as expected:
createError('Something happened')
createError('This happened', { props: 42 })
createError(422, { id: 1 })
createError(422, 'That is not allowed')
createError({ id: 3242, test: 'true' })
// The following however will not work as expected:
createError('Not found', 404) // Due to status not being in front, will default to 500
As long as you put status in front of message or whatever, you will be fine :)
This is a Node.js module available through the
npm registry. Installation is done using the
npm install
command:
$ npm install http-errors-lite
var createError = require('http-errors-lite')
var express = require('express')
var app = express()
app.use(function (req, res, next) {
if (!req.user) return next(createError(401, 'Please login to view this page.'))
next()
})
This is the current API, currently extracted from Koa and subject to change.
expose
- can be used to signal ifmessage
should be sent to the client, defaulting tofalse
whenstatus
>= 500headers
- can be an object of header names to values to be sent to the client, defaulting toundefined
. When defined, the key names should all be lower-casedmessage
- the traditional error message, which should be kept short and all single linestatus
- the status code of the error, mirroringstatusCode
for general compatibilitystatusCode
- the status code of the error, defaulting to500
Create a new error object with the given message msg
.
The error object inherits from createError.HttpError
.
var err = createError(404, 'This video does not exist!')
status: 500
- the status code as a numbermessage
- the message of the error, defaulting to node's text for that status code.properties
- custom properties to attach to the object
Extend the given error
object with createError.HttpError
properties. This will not alter the inheritance of the given
error
object, and the modified error
object is the
return value.
fs.readFile('foo.txt', function (err, buf) {
if (err) {
if (err.code === 'ENOENT') {
var httpError = createError(404, err, { expose: false })
} else {
var httpError = createError(500, err)
}
}
})
status
- the status code as a numbererror
- the error object to extendproperties
- custom properties to attach to the object