httperrors
Version:
Handy JavaScript Error classes representing the standard HTTP errors. Easily extensible and subclassable.
59 lines (40 loc) • 1.78 kB
Markdown
node-httperrors
===============
Exposes HTTP 4xx and 5xx status codes as JavaScript Error objects. The error classes are created using the <a href="https://github.com/One-com/node-createerror">createError module</a>.
The original use case for `httpErrors` is to use a custom <a href="https://github.com/visionmedia/express">express</a> error handler that uses the `statusCode` property of the error instance as the status code for the response, and optionally logs further info from the error.
Installation
------------
Make sure you have node.js and npm installed, then run:
npm install httperrors
Usage
-----
var httpErrors = require('httperrors');
// Instatiate by status code:
var myError = httpErrors(412);
// Instantiate by name (UpperCamelCase):
var err = new httpErrors.NotFound('The thing you were looking for was not found');
console.warn(err.toString()); // NotFound [404]: The thing you were looking for was not found
if (identityCrisis) {
throw new httpErrors.ImATeapot('Dude...');
}
The CamelCased error name is exposed as a true property on the
instances, so your error handling code becomes quite readable (and you
can avoid using instanceof):
if (err.NotFound) {
// ...
} else if (err.BadGateway) {
// ...
}
You can also create an error by status code (useful when proxying):
function fetchSomething(cb) {
var request = require('request');
request('http://example.com/thething', function (err, response) {
if (err) {
return cb(new (httpErrors[response.statusCode] || httpErrors.BadGateway)());
}
// ...
});
}
License
-------
3-clause BSD license -- see the `LICENSE` file for details.