2017-01-20 7 views
1

У меня есть функция в узле, который выглядит следующим образом:Узел с Async/Await - Как получить конкретную строку, где произошла ошибка?

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 (которое является LIB для общения с PostgreSQL) выдает ошибку , трассировка стека ошибок содержит только номера внутренних строк из pgPromise lib, в которых произошла ошибка.

Так что, когда ошибка улавливается и регистрируется в службе Sentry.io, я не могу точно знать точную строку ошибки.

Как я могу сделать так, что ошибка будет conatin трассировки стека, который говорит мне ошибка случилось в строке 351

+0

Можете ли вы показать, что вы сейчас на самом деле получаете? По умолчанию вы получаете последние 10 строк стека ошибок. Если вам нужно больше, вы можете попытаться увеличить количество строк так же, как это 'Error.stackTraceLimit = 1000;' или запустить свое приложение, как этот 'node --stack-trace-limit = 1000 main-file.js' – Molda

+0

С 'pg-prom' вы можете установить его для использования« bluebird »в качестве библиотеки обещаний, которая, в свою очередь, поддерживает трассировки с длинными стеками, которые вы можете включить и увидеть полные стеки. –

+0

@ vitaly-t Спасибо! настройка длинных трасс работает! вы можете ответить, чтобы я мог отметить это. –

ответ

1

я в конечном итоге делает:

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

, который дал мне полный трассировка стека для обещаний.


Memo от автора pg-promise:

Убедитесь, что у Долгий Stack Traces отключается, когда он идет в производство, а иногда и те могут иметь существенное влияние на производительность и потребление памяти.

+1

Там, вы это сделали! :) –