带有 Async/Await 的节点 - 如何获取发生错误的特定行?

Node with Async/Await - How to get specific line where error happened?

我在节点中有一个函数,如下所示:

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 库的内部行号 .

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

我怎样才能使错误包含在告诉我的堆栈跟踪中 错误发生在第 351 行

我最后做了:

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

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


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

确保在投入生产时禁用 Long Stack Traces,因为有时它们会对性能和内存消耗产生巨大影响。