节点与asynchronous/等待 – 如何得到错误发生的具体行?

我有一个节点的function,看起来像这样:

async someFlow() { try { func1(); func2(); await getSomeData(); func3(); } catch (e) { sentryIo.captureException(e); } } 

和getSomeData()看起来像这样:

 async getSomeData() { //... some code await pgPromise.one('select * from some bad syntax') // line 351!! //... some code } 

当pgPromise(这是与PostgreSQL交谈的库)引发错误时,错误的堆栈跟踪仅包含发生错误的pgPromise lib的内部行号

所以当错误被捕获并logging到Sentry.io服务时,我无法知道错误的确切路线。

我怎么能这样做,以便错误将抑制堆栈跟踪,告诉我在行351发生的错误

我结束了:

 var bb = require('bluebird'); bb.config({longStackTraces: true}); var pgp = require('pg-promise')({promiseLib: bb}); 

这给了我承诺的完整堆栈跟踪。


来自pg-promise作者的备忘录:

确保在生产中禁用长堆栈跟踪,因为有时这些跟踪会对性能和内存消耗产生巨大影响。