# pretty-print-error

A little function that formats an error object as a nice, readable string. Works in node and the browser; in node, it will use [kleur](https://www.npmjs.com/package/kleur) to add ANSI color code escape sequences to the output string, to make it easier to read.

## Features

- Works in both node and the browser
- Browser version is only ~2k
- Error name and stack are printed in color
- Handles non-error inputs gracefully (accepts `unknown` in TypeScript)
- Also prints any additional properties that were added to the Error object
  - This is particularly nice when working with node's `fs` errors; node sometimes puts the information about eg "which file couldn't be read" is sometimes in a property on the error, rather than in the error message, so by printing additional properties, it's guaranteed to be visible.

## Example

![Sample output of using pretty-print-error in the node repl. See the "Usage" section below for the code used in this screenshot.](https://user-images.githubusercontent.com/1341513/154799473-7189121d-cf5f-41f3-851c-3d358ec365a9.png)

## Installation

```
npm install pretty-print-error
```

## Usage

```ts
import { formatError } from "pretty-print-error";

const error = new Error("uh oh!");

error.context = {
  user: "jeff",
  session: "ewnj75hvj3v4tvmuy43er",
  favoriteIceCreamFlavor: "pineapple",
};

console.log(formatError(error));
/*
  Logs:

  Error: uh oh!
    at REPL2:1:9
  The above error also had these properties on it:
  {
    context: {
      user: 'jeff',
      session: 'ewnj75hvj3v4tvmuy43er',
      favoriteIceCreamFlavor: 'pineapple'
    }
  }
*/
```

## License

MIT
