Monday 10 April 2017

How to get the full Node.js stack trace when using async/await?

Let's say I have 12 async/await functions, and on the 12th one deep, an error happens. Right now, I have this code to catch all errors:

process.on('unhandledRejection', function {
    console.error(err);
    process.exit(1);
});

The problem is, the stacktrace is not returned:

ReferenceError: sdfg is not defined
- get.js:29 Fruit.module.exports [as get]
  /project/models/fruit/get.js:29:2
- next_tick.js:129 process._tickDomainCallback
  internal/process/next_tick.js:129:7

On other projects, when I used callbacks with the structure of:

function doSomething(err, done) {
  if (err) { return done(err); }
  /* do something */
  return done(null, true);
}

Then I had a nice stack trace of where the error has occured and the steps that led there. Now with async/await I've tried catching errors at all kinds of levels with no result. I've also tried longjohn and stackup -- and I still get only the last function that threw the error.

Help -- how do I see the complete stack?! And what's the proper way to catch nested async/await errors?



via John Derring

No comments:

Post a Comment