pretty-exceptions v2.0.2
Pretty Exceptions
Pretty and more helpful uncaught exceptions, automatically.

Usage
Library
const pretty = require('pretty-exceptions/lib')
const options = {
  source: true,
  native: true,
  color: true,
  cwd: process.cwd()
}
const output = pretty(new Error('foo'), options)options
| name | type | required | default | description | 
|---|---|---|---|---|
| source | Boolean | ✖ | false | Show source code in stack | 
| native | Boolean | ✖ | false | Show native code in stack | 
| color | Boolean | ✖ | true | use ansi colors | 
| cwd | String | ✖ | process.cwd() | resolve file names relative to this path | 
CLI (preferred)
This is the preferred approach to best avoid mistakingly including into production builds
- setup your - NODE_PATHenvironment variable- export NODE_PATH="$NODE_PATH:$(npm root -g)"
- install - pretty-exceptions- npm install --global pretty-exceptions
- run your application with the - --requireflag:- node --require pretty-exceptions my-app.js # alternative modes (see below): node --require pretty-exceptions/source my-app.js
Pro Tip:
Use Bash Aliases for less typing
# make a special alias for debugging
alias node-ex='node --require pretty-exceptions'
# or even better:
alias node='node --require pretty-exceptions/source'To make this persistent, you need to add this into your
~/.bashrc(or~/.bash_profile).
Environment Variables
| env | default | description | 
|---|---|---|
| PRETTY_EXCEPTIONS_SOURCE | 0 | Show source code in stack | 
| PRETTY_EXCEPTIONS_NATIVE | 0 | Show native code in stack | 
| PRETTY_EXCEPTIONS_COLOR | 1 | use ansi colors | 
Source (if you really must!)
Require at the top-most entry point of your app:
require('pretty-exceptions')
// alternative modes (see below):
require('pretty-exceptions/source-native')Modes
Default
$ node --require pretty-exceptions my-app.jsOutput
Error: oh no! this is an error message!
 │
 └┬╼ /path/to/my-app.js
  │
  ├──╼ someOtherFunction @ line 2:27
  ├──╼ someFunction @ line 6:3
  └──╼ Object.<anonymous> @ line 9:1Demo
Colors will vary based on your local terminal configuration

View Source
$ node --require pretty-exceptions/source my-app.js
# OR
$ PRETTY_EXCEPTIONS_SOURCE=1 node --require pretty-exceptions my-app.jsOutput
Error: oh no! this is an error message!
 │
 └┬╼ /path/to/my-app.js
  │
  ├──╼ someOtherFunction @ line 2
  │
  │    function someOtherFunction () {
  ├╌╌╌╌╌╌╌╌╌╌╮
  │    throw new Error('oh no! this is an error message!')
  │    }
  │
  ├──╼ someFunction @ line 6
  │
  │    function someFunction () {
  ├╌╌╌╌╮
  │    someOtherFunction()
  │    }
  │
  ├──╼ Object.<anonymous> @ line 9
  │
  └╌╌╌╌╮
       someFunction()Demo
Colors will vary based on your local terminal configuration

View Native Calls
$ node --require pretty-exceptions/native my-app.js
# OR
$ PRETTY_EXCEPTIONS_NATIVE=true node --require pretty-exceptions my-app.jsOutput
Error: oh no! this is an error message!
 │
 ├─┬╼ /path/to/my-app.js
 │ │
 │ ├──╼ someOtherFunction @ line 2:27
 │ ├──╼ someFunction @ line 6:3
 │ └──╼ Object.<anonymous> @ line 9:1
 │
 ├─┬╼ module.js
 │ │
 │ ├──╼ Module._compile @ line 571:32
 │ ├──╼ Object.Module._extensions..js @ line 580:10
 │ ├──╼ Module.load @ line 488:32
 │ ├──╼ tryModuleLoad @ line 447:12
 │ ├──╼ Function.Module._load @ line 439:3
 │ └──╼ Module.runMain @ line 605:10
 │
 └┬╼ bootstrap_node.js
  │
  └──╼ run @ line 423:7Demo
Colors will vary based on your local terminal configuration

View Source & Native
$ node --require pretty-exceptions/source-native my-app.js
# OR
$ PRETTY_EXCEPTIONS_SOURCE=1 PRETTY_EXCEPTIONS_NATIVE=1 node --require pretty-exceptions my-app.jsOutput
Error: oh no! this is an error message!
 │
 ├─┬╼ /path/to/my-app.js
 │ │
 │ ├──╼ someOtherFunction @ line 2
 │ │
 │ │    function someOtherFunction () {
 │ ├╌╌╌╌╌╌╌╌╌╌╮
 │ │    throw new Error('oh no! this is an error message!')
 │ │    }
 │ │
 │ ├──╼ someFunction @ line 6
 │ │
 │ │    function someFunction () {
 │ ├╌╌╌╌╮
 │ │    someOtherFunction()
 │ │    }
 │ │
 │ ├──╼ Object.<anonymous> @ line 9
 │ │
 │ └╌╌╌╌╮
 │      someFunction()
 │ 
 │
 ├─┬╼ module.js
 │ │
 │ ├──╼ Module._compile @ line 571
 │ ├──╼ Object.Module._extensions..js @ line 580
 │ ├──╼ Module.load @ line 488
 │ ├──╼ tryModuleLoad @ line 447
 │ ├──╼ Function.Module._load @ line 439
 │ └──╼ Module.runMain @ line 605
 │
 └┬╼ bootstrap_node.js
  │
  └──╼ run @ line 423Demo
Colors will vary based on your local terminal configuration

Author: Ahmad Nassri • Twitter: @AhmadNassri
2 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago