toJSON
Installation
$ npm install utils-error-to-json
Usage
var toJSON = ;
toJSON()
Returns a JSON representation of an error
object.
var err = 'beep' ;var json = ;/*{"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 = 'beep' ;erra = 'b';errc = 'd': 'e' ;var json = ;/*{"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.{thisname = 'CustomError';thismessage = msg || '';thisstack = stack;return this;}CustomErrorprototype = Object;CustomErrorprototypeconstructor = CustomError;var err = 'boop' ;var json = ;/*{"type": "TypeError","name": "CustomError","message": "boop","stack": "<stack>"}*/
Examples
var toJSON = ;var err = 'beep' ;console;/*{"type": "Error","name": "Error","message": "beep","stack": "<stack>"}*/err = 'invalid type' ;console;/*{"type": "TypeError","name": "TypeError","message": "invalid type","stack": "<stack>"}*/err = 'bad syntax' ;console;/*{"type": "SyntaxError","name": "SyntaxError","message": "bad syntax","stack": "<stack>"}*/err = 'unknown variable' ;console;/*{"type": "ReferenceError","name": "ReferenceError","message": "unknown variable","stack": "<stack>"}*/err = 'bad URI' ;console;/*{"type": "URIError","name": "URIError","message": "bad URI","stack": "<stack>"}*/err = 'value out-of-range' ;console;/*{"type": "RangeError","name": "RangeError","message": "value out-of-range","stack": "<stack>"}*/err = 'eval error' ;console;/*{"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.