utils-error-to-json
v1.0.0
Published
Returns a JSON representation of an error object.
Downloads
1,107
Maintainers
Readme
toJSON
Installation
$ npm install utils-error-to-json
Usage
var toJSON = require( 'utils-error-to-json' );
toJSON()
Returns a JSON representation of an error
object.
var err = new Error( 'beep' );
var json = toJSON( err );
/*
{
"type": "Error",
"name": "Error", // if present
"message": "beep",
"stack": "<stack>" // if present
}
*/
The JSON object
is guaranteed to have the following properties:
- type: error type
- message: error message
The only standardized cross-platform property is message
. Depending on the platform, the following properties may be present:
- name: error name
- stack: stack trace
- code: error code (Node.js system errors)
- errno: error code
string
(Node.js system errors) - syscall:
string
representing the failed system call (Node.js system errors)
The function
also serializes all enumerable
properties.
var err = new Error( 'beep' );
err.a = 'b';
err.c = { 'd': 'e' };
var json = toJSON( err );
/*
{
"type": "Error",
"name": "Error", // if present
"message": "beep",
"stack": "<stack>", // if present
"a": "b",
"c": {
"d": "e"
}
}
*/
Notes
Supported built-in
error
types:The implementation supports custom error types and sets the
type
field to the closest built-inerror
type.function CustomError( msg ) { this.name = 'CustomError'; this.message = msg || ''; this.stack = ( new TypeError() ).stack; return this; } CustomError.prototype = Object.create( TypeError.prototype ); CustomError.prototype.constructor = CustomError; var err = new CustomError( 'boop' ); var json = toJSON( err ); /* { "type": "TypeError", "name": "CustomError", "message": "boop", "stack": "<stack>" } */
Examples
var toJSON = require( 'utils-error-to-json' );
var err = new Error( 'beep' );
console.log( toJSON( err ) );
/*
{
"type": "Error",
"name": "Error",
"message": "beep",
"stack": "<stack>"
}
*/
err = new TypeError( 'invalid type' );
console.log( toJSON( err ) );
/*
{
"type": "TypeError",
"name": "TypeError",
"message": "invalid type",
"stack": "<stack>"
}
*/
err = new SyntaxError( 'bad syntax' );
console.log( toJSON( err ) );
/*
{
"type": "SyntaxError",
"name": "SyntaxError",
"message": "bad syntax",
"stack": "<stack>"
}
*/
err = new ReferenceError( 'unknown variable' );
console.log( toJSON( err ) );
/*
{
"type": "ReferenceError",
"name": "ReferenceError",
"message": "unknown variable",
"stack": "<stack>"
}
*/
err = new URIError( 'bad URI' );
console.log( toJSON( err ) );
/*
{
"type": "URIError",
"name": "URIError",
"message": "bad URI",
"stack": "<stack>"
}
*/
err = new RangeError( 'value out-of-range' );
console.log( toJSON( err ) );
/*
{
"type": "RangeError",
"name": "RangeError",
"message": "value out-of-range",
"stack": "<stack>"
}
*/
err = new EvalError( 'eval error' );
console.log( toJSON( err ) );
/*
{
"type": "EvalError",
"name": "EvalError",
"message": "eval error",
"stack": "<stack>"
}
*/
To run the example code from the top-level application directory,
$ node ./examples/index.js
Tests
Unit
This repository uses tape for unit tests. To run the tests, execute the following command in the top-level application directory:
$ make test
All new feature development should have corresponding unit tests to validate correct functionality.
Test Coverage
This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:
$ make test-cov
Istanbul creates a ./reports/coverage
directory. To access an HTML version of the report,
$ make view-cov
Browser Support
This repository uses Testling for browser testing. To run the tests in a (headless) local web browser, execute the following command in the top-level application directory:
$ make test-browsers
To view the tests in a local web browser,
$ make view-browser-tests
License
Copyright
Copyright © 2015. Athan Reines.