24

When a normal exception occurs, a stack trace like the following is outputted:

util.js:38
      case '%s': return String(args[i++]);
                        ^
TypeError: Cannot convert object to primitive value
    at String (unknown source)
    at util.js:38:25
    at String.replace (native)
    at Object.<anonymous> (util.js:35:23)
    at Object.<anonymous> (console.js:25:36)
    at EventEmitter.<anonymous> (/project/src/routines/debug/boot.js:16:21)
    at EventEmitter.emit (/project/node_modules/eventemitter2/lib/eventemitter2.js:319:22)
    at /project/src/bootstrap.js:15:14
    at /project/src/util/routineloader.js:36:11
    at /project/src/util/routineloader.js:47:6

Which is very helpful. When I then do the following somewhere:

process.on('uncaughtException', function(err) {
        console.trace();
        throw err;
    });

I only get:

Trace: 
    at EventEmitter.<anonymous> (/project/src/routines/debug/exceptions.js:4:17)
    at EventEmitter.emit (events.js:88:20)

Which is not helpful at all.

How do I make it return the entire stack trace, like the original one?

1

3 Answers 3

30

You're almost there:

process.on('uncaughtException', function(err) {
  console.log(err.stack);
  throw err;
});

function foo() {
  throw new Error("HI. I'm an error.");
}

foo();

/* Prints
Error: HI. I'm an error.
    at foo (/Users/rye/Desktop/test.js:7:9)
    at Object.<anonymous> (/Users/rye/Desktop/test.js:10:1)
    at Module._compile (module.js:441:26)
    at Object..js (module.js:459:10)
    at Module.load (module.js:348:31)
    at Function._load (module.js:308:12)
    at Array.0 (module.js:479:10)
    at EventEmitter._tickCallback (node.js:192:40)
*/
Sign up to request clarification or add additional context in comments.

1 Comment

DONT STOP HERE! If you need a deeper/longer stack trace than the default one there is a better solution below.
8
node --stack_trace_limit=200 your-script.js

Comments

0

I found that when I used console.log(err) I got the right results so I looked at the api and found the following:

var mystring=require('util').inspect(error_object);

and you'll get the stack trace as a string

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.