2017-04-10 22 views
7

Diyelim ki 12 async/await işlevlerim var ve 12. bir derinlikte bir hata meydana geldi. Şu anda, tüm hataları yakalamak için bu kodu vardır:Async/await kullanırken tam Node.js yığın izi nasıl alınır?

sorun, StackTrace iade edilir
process.on('unhandledRejection', function { 
    console.error(err); 
    process.exit(1); 
}); 

: Ben yapısı ile geri aramalar kullanılan diğer projelerde

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

Ardından, hatanın oluştuğu yer olan güzel bir yığın izi ve oraya giden adımlar vardı. Şimdi async/await ile sonuçsuz her türlü seviyedeki hataları yakalamayı denedim. Ben de longjohn ve stackup denedim - ve hala hatayı atmak sadece son işlevi alıyorum.

Yardım - tüm yığını nasıl görebilirim? Ve iç içe async/bekliyor hataları yakalamak için uygun yol nedir?

DÜZENLEME: (komple örnek)

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

cevap

1

unhandledRejection hata işleyicisi tüm bu yakalamaya çalışın için doğru yol olmayabilir. Ben senin uyumsuz sarma öneririz ediyorum/deneme/yakalama bloklar halinde bekliyor:

async function doSomething() { 
    try { 
    await doSomethingElse() 
    } catch(err) { 
    console.log(err) 
    } 
} 

Bu size daha iyi bir yığın izleme vermelidir.

+0

Bunun anlamı veren şeydir: \t ReferenceError: sdfg [get olarak] Fruit.module.exports de \t tanımlanmamıştır (/models/fruit/get.js:29:2) \t process._tickDomainCallback de (internal/process/next_tick.js: 129: 7) –

+0

@JohnDerring, sdfg'nin meyve modelinin 29. satırında tanımlanmadığını söyleyen bir yığın izine benziyor. Neyi kaçırıyorum? –

+0

Bu işleve başlamadan önce gelen 11 diğer işlev? Başka bir deyişle tam yığın izi ...? –

İlgili konular