Załóżmy, że mam 12 async/await
funkcji, a na 12. głębokości występuje błąd. Teraz, mam ten kod, aby złapać wszystkie błędy:Jak uzyskać pełne śledzenie stosu Node.js podczas korzystania z asynchronizacji/czekania?
process.on('unhandledRejection', function {
console.error(err);
process.exit(1);
});
Problem, tym StackTrace nie powrócił:
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
nad innymi projektami, kiedy używany zwrotnych ze strukturą:
function doSomething(err, done) {
if (err) { return done(err); }
/* do something */
return done(null, true);
}
Następnie miałem niezłe ślady stosu, gdzie wystąpił błąd i kroki, które do niego doprowadziły. Teraz z async/await
próbowałem złapać błędy na wszystkich poziomach bez rezultatu. Próbowałem również longjohn
i stackup
- i nadal otrzymuję tylko ostatnią funkcję, która spowodowała błąd.
Pomoc - jak mogę zobaczyć cały stos ?! I jaki jest właściwy sposób przechwytywania zagnieżdżonych błędów async/await?
EDIT: (kompletny przykład)
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));
To co to daje: \t ReferenceError: sdfg nie jest zdefiniowana \t na Fruit.module.exports [GET] (/models/fruit/get.js:29:2) \t na process._tickDomainCallback (internal/process/next_tick.js: 129: 7) –
@JohnDerring, który wygląda jak ślad stosu, mówiąc, że sdfg nie jest zdefiniowany w linii 29 modelu owocowego. czego mi brakuje? –
11 innych funkcji, które pojawiły się przed uzyskaniem tej funkcji? Innymi słowy, kompletny ślad stosu ...? –