164 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			164 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# http-errors
 | 
						|
 | 
						|
[![NPM Version][npm-version-image]][npm-url]
 | 
						|
[![NPM Downloads][npm-downloads-image]][node-url]
 | 
						|
[![Node.js Version][node-image]][node-url]
 | 
						|
[![Build Status][travis-image]][travis-url]
 | 
						|
[![Test Coverage][coveralls-image]][coveralls-url]
 | 
						|
 | 
						|
Create HTTP errors for Express, Koa, Connect, etc. with ease.
 | 
						|
 | 
						|
## Install
 | 
						|
 | 
						|
This is a [Node.js](https://nodejs.org/en/) module available through the
 | 
						|
[npm registry](https://www.npmjs.com/). Installation is done using the
 | 
						|
[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
 | 
						|
 | 
						|
```bash
 | 
						|
$ npm install http-errors
 | 
						|
```
 | 
						|
 | 
						|
## Example
 | 
						|
 | 
						|
```js
 | 
						|
var createError = require('http-errors')
 | 
						|
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()
 | 
						|
})
 | 
						|
```
 | 
						|
 | 
						|
## API
 | 
						|
 | 
						|
This is the current API, currently extracted from Koa and subject to change.
 | 
						|
 | 
						|
### Error Properties
 | 
						|
 | 
						|
- `expose` - can be used to signal if `message` should be sent to the client,
 | 
						|
  defaulting to `false` when `status` >= 500
 | 
						|
- `headers` - can be an object of header names to values to be sent to the
 | 
						|
  client, defaulting to `undefined`. When defined, the key names should all
 | 
						|
  be lower-cased
 | 
						|
- `message` - the traditional error message, which should be kept short and all
 | 
						|
  single line
 | 
						|
- `status` - the status code of the error, mirroring `statusCode` for general
 | 
						|
  compatibility
 | 
						|
- `statusCode` - the status code of the error, defaulting to `500`
 | 
						|
 | 
						|
### createError([status], [message], [properties])
 | 
						|
 | 
						|
Create a new error object with the given message `msg`.
 | 
						|
The error object inherits from `createError.HttpError`.
 | 
						|
 | 
						|
<!-- eslint-disable no-undef, no-unused-vars -->
 | 
						|
 | 
						|
```js
 | 
						|
var err = createError(404, 'This video does not exist!')
 | 
						|
```
 | 
						|
 | 
						|
- `status: 500` - the status code as a number
 | 
						|
- `message` - the message of the error, defaulting to node's text for that status code.
 | 
						|
- `properties` - custom properties to attach to the object
 | 
						|
 | 
						|
### createError([status], [error], [properties])
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
<!-- eslint-disable no-redeclare, no-undef, no-unused-vars -->
 | 
						|
 | 
						|
```js
 | 
						|
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 number
 | 
						|
- `error` - the error object to extend
 | 
						|
- `properties` - custom properties to attach to the object
 | 
						|
 | 
						|
### new createError\[code || name\](\[msg]\))
 | 
						|
 | 
						|
Create a new error object with the given message `msg`.
 | 
						|
The error object inherits from `createError.HttpError`.
 | 
						|
 | 
						|
<!-- eslint-disable no-undef, no-unused-vars -->
 | 
						|
 | 
						|
```js
 | 
						|
var err = new createError.NotFound()
 | 
						|
```
 | 
						|
 | 
						|
- `code` - the status code as a number
 | 
						|
- `name` - the name of the error as a "bumpy case", i.e. `NotFound` or `InternalServerError`.
 | 
						|
 | 
						|
#### List of all constructors
 | 
						|
 | 
						|
|Status Code|Constructor Name             |
 | 
						|
|-----------|-----------------------------|
 | 
						|
|400        |BadRequest                   |
 | 
						|
|401        |Unauthorized                 |
 | 
						|
|402        |PaymentRequired              |
 | 
						|
|403        |Forbidden                    |
 | 
						|
|404        |NotFound                     |
 | 
						|
|405        |MethodNotAllowed             |
 | 
						|
|406        |NotAcceptable                |
 | 
						|
|407        |ProxyAuthenticationRequired  |
 | 
						|
|408        |RequestTimeout               |
 | 
						|
|409        |Conflict                     |
 | 
						|
|410        |Gone                         |
 | 
						|
|411        |LengthRequired               |
 | 
						|
|412        |PreconditionFailed           |
 | 
						|
|413        |PayloadTooLarge              |
 | 
						|
|414        |URITooLong                   |
 | 
						|
|415        |UnsupportedMediaType         |
 | 
						|
|416        |RangeNotSatisfiable          |
 | 
						|
|417        |ExpectationFailed            |
 | 
						|
|418        |ImATeapot                    |
 | 
						|
|421        |MisdirectedRequest           |
 | 
						|
|422        |UnprocessableEntity          |
 | 
						|
|423        |Locked                       |
 | 
						|
|424        |FailedDependency             |
 | 
						|
|425        |UnorderedCollection          |
 | 
						|
|426        |UpgradeRequired              |
 | 
						|
|428        |PreconditionRequired         |
 | 
						|
|429        |TooManyRequests              |
 | 
						|
|431        |RequestHeaderFieldsTooLarge  |
 | 
						|
|451        |UnavailableForLegalReasons   |
 | 
						|
|500        |InternalServerError          |
 | 
						|
|501        |NotImplemented               |
 | 
						|
|502        |BadGateway                   |
 | 
						|
|503        |ServiceUnavailable           |
 | 
						|
|504        |GatewayTimeout               |
 | 
						|
|505        |HTTPVersionNotSupported      |
 | 
						|
|506        |VariantAlsoNegotiates        |
 | 
						|
|507        |InsufficientStorage          |
 | 
						|
|508        |LoopDetected                 |
 | 
						|
|509        |BandwidthLimitExceeded       |
 | 
						|
|510        |NotExtended                  |
 | 
						|
|511        |NetworkAuthenticationRequired|
 | 
						|
 | 
						|
## License
 | 
						|
 | 
						|
[MIT](LICENSE)
 | 
						|
 | 
						|
[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/http-errors/master
 | 
						|
[coveralls-url]: https://coveralls.io/r/jshttp/http-errors?branch=master
 | 
						|
[node-image]: https://badgen.net/npm/node/http-errors
 | 
						|
[node-url]: https://nodejs.org/en/download
 | 
						|
[npm-downloads-image]: https://badgen.net/npm/dm/http-errors
 | 
						|
[npm-url]: https://npmjs.org/package/http-errors
 | 
						|
[npm-version-image]: https://badgen.net/npm/v/http-errors
 | 
						|
[travis-image]: https://badgen.net/travis/jshttp/http-errors/master
 | 
						|
[travis-url]: https://travis-ci.org/jshttp/http-errors
 |