axios和android模拟器的网络错误



我得到了一个React-Native应用程序,该应用程序与为API提供服务的NodeJS后端一起工作。

我的React-Native前沿正在使用Expo和Axios来点击我的NodeJS API的一条路由(使用Hapi、Joi、Knex),这将(例如)更新我的DB(MySQL)。

我的iOS模拟器一切正常。然而,在Android Emulator上,我在路由"上的一些点击不起作用,并显示以下错误消息: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 Emulator可以访问我的API,这一部分也可以。

Bugy路由在iOS上运行正常,在失眠/邮差(localhost:8000/api/sendMail)上运行正常。它在Android Emulator上工作,但应用程序没有检测到它。

这是我的代码示例:

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
});
}

BACK--这是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

谢谢。

您正在处理两个问题:

1) 您的模拟器无法工作,因为它无法将单词"localhost"解析为ip。就像使用localhost2.com一样,它不会解决某些问题。这必须指向服务器的本地ip 192.x.x.x

2) 您的服务器必须绑定到0.0.0.0,因为通过将其绑定到localhost,它无法解析为本地请求,如192.x.x.x。如果您修复了绑定,您的模拟器将有可能看到服务器,而邮递员也会看到。

在标头中添加这些参数解决了我的问题

"Content-Type": "application/x-www-form-urlencoded",
Accept: "application/json"

相关内容

  • 没有找到相关文章

最新更新