You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					170 lines
				
				5.8 KiB
			
		
		
			
		
	
	
					170 lines
				
				5.8 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								# 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][ci-image]][ci-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):
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```console
							 | 
						||
| 
								 | 
							
								$ 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`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```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 -->
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```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
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### createError.isHttpError(val)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Determine if the provided `val` is an `HttpError`. This will return `true`
							 | 
						||
| 
								 | 
							
								if the error inherits from the `HttpError` constructor of this module or
							 | 
						||
| 
								 | 
							
								matches the "duck type" for an error this module creates. All outputs from
							 | 
						||
| 
								 | 
							
								the `createError` factory will return `true` for this function, including
							 | 
						||
| 
								 | 
							
								if an non-`HttpError` was passed into the factory.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### new createError\[code || name\](\[msg]\))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Create a new error object with the given message `msg`.
							 | 
						||
| 
								 | 
							
								The error object inherits from `createError.HttpError`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```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        |TooEarly                     |
							 | 
						||
| 
								 | 
							
								|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)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[ci-image]: https://badgen.net/github/checks/jshttp/http-errors/master?label=ci
							 | 
						||
| 
								 | 
							
								[ci-url]: https://github.com/jshttp/http-errors/actions?query=workflow%3Aci
							 | 
						||
| 
								 | 
							
								[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
							 |