节点与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作者的备忘录:
确保在生产中禁用长堆栈跟踪,因为有时这些跟踪会对性能和内存消耗产生巨大影响。