2016-08-25 22 views
30

Bu aptal görünebilir, ancak bir istek Axios'ta başarısız olduğunda hata verilerini almaya çalışıyorum.Durum kodunu Axios'daki bir http hatasından nasıl edinebilirim?

axios.get('foo.com') 
    .then((response) => {}) 
    .catch((error) => { 
     console.log(error) //Logs a string: Error: Request failed with status code 404 
    }) 

Dize yerine, durum kodu ve içeriği olan bir nesneyi almak mümkün mü? Örneğin:

Object = {status: 404, reason: 'Not found', body: '404 Not found'} 

cevap

65

Gördüğünüz, error nesnesinin toString yöntemiyle döndürülen dizedir. Ben hata yanıt almak için bu önleyicilerin kullanıyorum

axios.get('/foo') 
    .catch(function (error) { 
    if (error.response) { 
     console.log(error.response.data); 
     console.log(error.response.status); 
     console.log(error.response.headers); 
    } 
    }); 
+1

'ı kaydettiğimde ilgili bir nesne bile' response' özelliğine başvurmazsam otomatik olarak dizgeye dönüşen arkasındaki sihrini açıklayabilir misiniz? –

+1

'console.log'' Error' nesnelerini biçimlendirmek için 'toString' yöntemini kullanır. 'Response' özelliğine atıfta bulunmakla ilgisi yoktur. –

+1

Hala kafam karıştı, bu hata nesneler için özel veya? Bir nesneyi konsol.log yaparsam, bir dize değil nesneyi alırım. –

1

Bu bilinen bir hata olduğunu, bu yüzden ben "axios": "0.12.0" kullanarak sona erdi aynı problem vardı "axios": "0.13.1"

https://github.com/mzabriskie/axios/issues/378

kullanmayı deneyin. Benim için iyi çalışıyor.

+0

Bu yaşıyorum aynı sorunu değil, orada 'error' –

3

: (. error bir dize değil)

bir yanıt sunucusundan alınan edilmişse, error nesne response özelliğini içerecektir. @ Nick söylediği gibi sen console.log bir JavaScript Error nesne değişir ve (IMO) inanılmaz can sıkıcı hataları denetleme yapar console.log kesin uygulanmasına bağlıdır zaman

const HttpClient = axios.create({ 
    baseURL: env.baseUrl, 
}); 

HttpClient.interceptors.response.use((response) => { 
    return response; 
}, (error) => { 
    return Promise.resolve({ error }); 
}); 
6

, sonuçları görmek. Eğer tam Error nesne ve toString() yöntemi atlayarak taşıyan tüm bilgileri görmek isterseniz

, sadece JSON.stringify kullanabilirsiniz:

axios.get('/foo') 
    .catch(function (error) { 
    console.log(JSON.stringify(error)) 
    }); 
İlgili konular