Have ideas to improve npm?Join in the discussion! »

    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/nested-error-stacks package

    2.1.0 • Public • Published

    Nested stacktraces for Node.js!

    Build Status NPM version Dependency Status

    With this module, you can wrap a caught exception with extra context for better debugging. For example, a network error's stack would normally look like this:

    Error: connect ECONNREFUSED
        at errnoException (net.js:904:11)
        at Object.afterConnect [as oncomplete] (net.js:895:19)

    Using this module, you can wrap the Error with more context to get a stack that looks like this:

    NestedError: Failed to communicate with localhost:8080
        at Socket.<anonymous> (/Users/mattlavin/Projects/nested-stacks/demo.js:6:18)
        at Socket.EventEmitter.emit (events.js:95:17)
        at net.js:440:14
        at process._tickCallback (node.js:415:13)
    Caused By: Error: connect ECONNREFUSED
        at errnoException (net.js:904:11)
        at Object.afterConnect [as oncomplete] (net.js:895:19)

    How to wrap errors

    Here is an example program that uses this module to add more context to errors:

    var NestedError = require('nested-error-stacks');
    var net = require('net');
    var client = net.connect({port: 8080});
    client.on('error', function (err) {
        var newErr = new NestedError("Failed to communicate with localhost:8080", err);

    How to inherit

    It is recommended to use explicit names for Error classes. You can do it like this:

    var util = require('util');
    var NestedError = require('nested-error-stacks');
    function MyError(message, nested) {
        NestedError.call(this, message, nested);
    util.inherits(MyError, NestedError);
    MyError.prototype.name = 'MyError';


    npm i nested-error-stacks

    DownloadsWeekly Downloads






    Unpacked Size

    5.45 kB

    Total Files


    Last publish


    • avatar