@ganintegrity/gan-error
v1.2.1
Published
an extendable ES6 Error with support for HTTP errors
Downloads
169,794
Maintainers
Readme
@ganintegrity/gan-error
an extendable ES6 Error with support for HTTP errors
Installation
npm install --save @ganintegrity/gan-error
Usage
const GanError = require('@ganintegrity/gan-error');
const error = new GanError('something bad happened');
console.log(error.message); // => 'something bad happened'
console.log(error.name); // => 'GanError'
class MyError extends GanError {}
const myError = new MyError('some other bad thing happened');
console.log(myError.message); // => 'some other bad thing happened'
console.log(myError.name); // => 'MyError''
When passed an error instance, the message
is "inherited" from the error
instance and the passed error stored as originalError
:
class CustomError extends GanError {}
const error = new CustomError(new Error('foo'));
console.log(error.message); // => 'foo'
console.log(error.originalError); // => new Error('foo')
Also, if the passed error instance has a status
property, it will also be
copied over from the error:
class CustomError extends GanError {}
const error = new CustomError(new GanError.InternalServerError('foo'));
console.log(error.message); // => 'foo'
console.log(error.status); // => 500
console.log(error.originalError); // => new GanError.InternalServerError('foo')
Objects can also be passed to the constructor. They will be stored as data
on
the error:
class CustomError extends GanError {}
const error = new CustomError({ foo: 'bar' } });
console.log(error.message); // => ''
console.log(error.data); // => { message: 'foo', foo: 'bar' }
If the object contains a message
property whose value is a string, then that
is also used as the error's message:
class CustomError extends GanError {}
const error = new CustomError({ message: 'oops!', foo: 'bar' } });
console.log(error.message); // => 'oops!'
console.log(error.data); // => { message: 'oops!', foo: 'bar' }
HTTP errors
HTTP errors are exposed as static properties on GanError
by name and by status
code:
// base http error, without `status`
class MyError extends GanError.HttpError {}
// http error with `status` 500
class MySecondError extends GanError.InternalServerError {}
// same, http error with `status` 500
class MyOtherError extends GanError['500'] {}
Disabling HTTP errors
If you're using this module for the browser and you don't need support for http
errors, you can disable them altogether by setting the DISABLE_GAN_HTTP_ERRORS
environment variable to true
when bundling your frontend code (e.g. with
webpack's DefinePlugin).
This reduces the size of the frontend bundle.