node.js - 具有异步/等待的 Node - 如何获取发生错误的特定行?

标签 node.js async-await pg-promise

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

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});

这为我提供了 promise 的完整堆栈跟踪。


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

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

关于node.js - 具有异步/等待的 Node - 如何获取发生错误的特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41764182/

相关文章:

node.js - 流错误处理/后备 Node

javascript - 缺少 "PLAIN"nodemailer 的凭据

javascript - 使用异步/等待延迟强制请求之间的时间

c# - 从异步方法设置时,AsyncLocal 的值不正确

node.js - 使用 node.js 并 promise 获取分页数据

javascript - AWS SDK JS S3 getObject 流元数据

c# - 将异步回调传递给 Timer 构造函数

javascript - pg-promise - 错误运算符不存在 : bigint = bigint[]

node.js - pg-promise:使用 pgp.helpers.update 更新包含数组文本列的行

node.js - 使用 React 从头开始​​构建实时聊天小部件