Я получил приложение React-Native, работающее с серверной частью NodeJS, которая обслуживает API.
Мой фронт React-Native использует Expo и Axios для поиска маршрута моего API NodeJS (используя Hapi, Joi, Knex), что (например,) обновит мою БД (MySQL).
Все работает нормально с моим симулятором iOS. Однако в эмуляторе Android некоторые из моих попаданий по маршруту "" не работают "" со следующим сообщением об ошибке: Network Error - node_modules/axios/lib/core/createError.js:16:24 in createError
(на самом деле, это сработало, но фронт не обнаруживает его ...)
Это странно, потому что, как я уже сказал, это ТОЛЬКО для некоторых моих маршрутов. Я изменил http://localhost:8000/api
на http://10.0.2.2:8000/api
, чтобы эмулятор Android получил доступ к моему API, и это нормально для этой части.
Глючный маршрут работает должным образом на iOS и работает на Insomnia / Postman (localhost:8000/api/sendMail
). Он работает на эмуляторе Android, но приложение не обнаруживает его.
Это пример моего кода:
FRONT - При нажатии на мою кнопку «SendEmail»:
/* Button.js */
const sendAndEmailPromise = await sendEmail(this.state.email);
console.log(sendAndEmailPromise); // Output : NOTHING (not undefined, not null, N O T H I N G).
if (sendAndEmailPromise.status === 200) {
// handle it
} else (sendAndEmailPromise.status === 403) {
// etc. for each of my codeStatus that can be returned by my API
}
/* MyAPI.js */
export function sendEmail(mail) {
return axiosInstance
.post(`/sendEmail`, null, {
params: {
mail
},
})
.then(response => response) // Will not enter here
.catch(error => {
console.log(error); // Will output : NETWORK ERROR
});
}
НАЗАД - Это обещание sendEmail:
// Will return true of false :
const isMailSend = await sendTheEmail(mail);
console.log(isMailSend); // Output : TRUE and I receive the email on my gmail, so Android Emulator HIT the route.
if (isMailSend) {
return handler
.response({
data: {
message: "Email sent.",
},
})
.code(200);
} else {
// Handle it and return another response
}
Теперь я ожидаю, что все будет работать нормально (что на самом деле произошло ...), и получу статус кода этого, а не «Ошибка сети».
Более того, возможно ли с помощью Axios получить другой уровень ошибки? Нечто более конкретное.
Проблема GitHub, которая не полностью совпадает, но, кажется, имеет отношение к чему-то эквивалентному: https://github.com/axios/axios/issues/973
Спасибо.