Почему ax ios ловит ошибки при успешных вызовах Spotify API? - PullRequest
0 голосов
/ 21 февраля 2020

У меня странная и разочаровывающая ошибка при попытке добавить песни для спойтинга через API.

Вызов API успешен, и песни добавлены правильно, однако возвращается «Ошибка TypeError: Cannot read» «данные» из неопределенного ».

Это код, который, я считаю, должен быть правильным.

router.post('/addSongs', async (req, res) => {
    var access_token = req.query.access_token;
    var playlist_id = req.query.playlist_id;
    var songs = req.body.songs;

    try {
        var retVal = await axios({
            method: 'post',
            url: `https://api.spotify.com/v1/playlists/${playlist_id}/tracks`,
            headers: { 
                'Authorization': 'Bearer ' + access_token,
                'Content-type': 'application/json'
            },
            data: {
                uris: songs
            }
        });

        res.send(retVal);  
    } catch (error) {
        console.log(error.response.data);

        res.status(error.response.status).send(error);

    }
});

Одно решение, которое я нашел, которое делает его более расстраивающим, состоит в том, что следующее изменение заставляет его работать идеально, хотя и заставляет меня чувствовать ужасно:

...
} catch (error) {
    res.status(200).send("whatever");
}
...

Я использую Express и Netlify-lambda, и я довольно плохо знаком со всем этим.

Обратите внимание, что он также работает правильно и печатает статус ошибки и сообщение, когда на самом деле есть ошибка, и я получаю сообщение об ошибке «Преобразование круговой структуры в JSON», если я только печатаю ошибку

1 Ответ

0 голосов
/ 21 февраля 2020

Так что, если кто-нибудь найдет это, я решил. Проблема была в том, что axois выдавал ошибку, когда я пытался вернуть переменную retVal. Я думаю, что это была пустая строка.

Решение:

    res.send(retVal)

    change to:

    res.status(201).send()

...