当我在节点上使用axios发出GET请求时,它只是挂起了,捕获没有被抛出并且捕获了错误。
我不确定该如何调试,不会引发任何错误。我正在使用Spotify API,但是可以肯定的是,如果那边有问题,我会得到一些回应吗?
有一段时间我遇到了ECONNRESET错误,我的互联网不太稳定。但是此错误不再被抛出。
我尝试使用提取,同样的问题。我已经回到经典的Promise语法。从现在开始,它一直运行良好。
此方法被调用并记录。
"node": "10.0.0",
"axios": "^0.19.0",
function tryFetchForPlaylists(usersCred) {
console.log('req method called ', usersCred)
let playlistData;
try {
playlistData = axios.get('https://api.spotify.com/v1/users/' + usersCred.userId + '/playlists',
{
headers: {
'Authorization': 'Bearer ' + usersCred.accessToken,
'Content-Type': 'application/json'
}
});
} catch (err) {
console.log(err)
if (err.response.status === 401) {
console.error(err);
return {statusCode: 401};
}
}
playlistData.then((res) => {
console.info('response status',res.status)
if(res.status === 200) {
return res;
}
});
}
被称为'req的'req方法被记录下来,凭据在那里,没有其他东西,只是挂了。
答案 0 :(得分:1)
无需将调用存储在函数内部。只需将通话作为承诺即可。
function tryFetchForPlaylists(usersCred) {
console.log('req method called ', usersCred)
let playlistData;
return axios.get('https://api.spotify.com/v1/users/' + usersCred.userId + '/playlists',
{
headers: {
'Authorization': 'Bearer ' + usersCred.accessToken,
'Content-Type': 'application/json'
}
})
.then((data) => {
// return your data here...
})
.catch((err) => {})
}