Пожалуйста, помогите мне, если я неправильно использую ax ios. Этот простой фрагмент кода может запускаться напрямую:
const axios = require('axios')
axios.post('https://exp.host/--/api/v2/push/send', {"to":["ExponentPushToken[xxxxxxx]"],"title":"test title","body":"test body."})
.then(responseExpo => {
console.log("expo replied normally: " + JSON.stringify(responseExpo));
})
.catch(error => {
console.log("expo replied with error: " + JSON.stringify(error,null,4));
});
Результат:
Promise { <pending> }
expo replied with error: {}
«ax ios»: «^ 0.19.2»
Я попытался опубликовать с помощью инструментов api и увидеть ответ с обычным кодом состояния 200:
{
"data":[
{
"status": "error",
"message": "\"ExponentPushToken[xxxxxxx]\" is not a registered push notification recipient",
"details":{
"error": "DeviceNotRegistered"
}
}
]
}
(вы можете игнорировать «ошибку»: «DeviceNotRegistered» внутри этого json, потому что это ожидается, потому что я поставил недопустимое входное значение xxxxx при вызове API. Даже при вводе допустимого входного значения результат все равно возвращается в блок catch с пустой ошибкой)
Я ожидаю, что он вернется в блок then, потому что на самом деле сервер ответ с 200 с хорошо отформатированным json результатом. Я сделал что-то не так, чтобы вызов вернулся в блок catch? Поскольку ошибка пуста, я понятия не имею, что пошло не так.
=============================== после напоминания jfriend я изменил отображение ошибки напрямую.
console.log ("expo ответил с ошибкой:" + ошибка);
теперь это отображается так:
Promise { <pending> }
expo replied with error: TypeError: Converting circular structure to JSON
--> starting at object with constructor 'ClientRequest'
| property 'socket' -> object with constructor 'TLSSocket'
--- property '_httpMessage' closes the circle
Кто-нибудь может сообщить мне, что именно это означает, и посоветовать мне, как исправить мое использование?