Axios获取请求挂起,没有错误,捕获未触发

时间:2019-07-19 15:04:26

标签: node.js express axios spotify

当我在节点上使用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方法被记录下来,凭据在那里,没有其他东西,只是挂了。

1 个答案:

答案 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) => {})


    }