7
假設我有12 async/await
函數,並且在第12個函數中,發生錯誤。現在,我有這樣的代碼來捕獲所有的錯誤:如何在使用async/await時獲取完整的Node.js堆棧跟蹤?
process.on('unhandledRejection', function {
console.error(err);
process.exit(1);
});
的問題是,沒有返回堆棧跟蹤:
ReferenceError: sdfg is not defined
- get.js:29 Fruit.module.exports [as get]
/project/models/fruit/get.js:29:2
- next_tick.js:129 process._tickDomainCallback
internal/process/next_tick.js:129:7
在其他項目上,當我用回調與結構:
function doSomething(err, done) {
if (err) { return done(err); }
/* do something */
return done(null, true);
}
然後我有一個很好的堆棧跟蹤錯誤發生的地方和那裏的步驟。現在用async/await
我已經嘗試在各種級別捕捉錯誤,沒有結果。我也嘗試longjohn
和stackup
- 我仍然只得到拋出錯誤的最後一個函數。
幫助 - 如何查看完整的堆棧?捕捉嵌套異步/等待錯誤的正確方法是什麼?
編輯:(一個完整的例子)
const getA = async() => {
await getB();
}
const getB = async() => {
await getC();
sdgf();
}
const getC = async() => {}
const start = async() => {
await getA();
}
start().then().catch(e => console.error(e));
這是什麼,得到: \t的ReferenceError:sdfg不是在Fruit.module.exports [如GET]定義 \t(/models/fruit/get.js:29:2) \t在process._tickDomainCallback (internal/process/next_tick.js:129:7) –
@JohnDerring看起來像一個堆棧跟蹤,說sdfg沒有在果實模型的第29行定義。我錯過了什麼? –
獲得此功能之前的其他11個功能?換句話說,完整的堆棧跟蹤...? –