带有 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,因为有时它们会对性能和内存消耗产生巨大影响。
我在节点中有一个函数,如下所示:
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,因为有时它们会对性能和内存消耗产生巨大影响。