Api React Native/Expo:Fetch throws“;网络请求失败”;

Api React Native/Expo:Fetch throws“;网络请求失败”;,api,react-native,express,request,fetch,Api,React Native,Express,Request,Fetch,我看了好几篇关于这个主题的帖子,但都没有结果。一方面,我有一个表单,它收集信息(姓名等),然后将其保存在数据库(mongodb)中。当我使用邮递员通过路由/注册发送信息时,一切正常,我可以在mongodb中看到我的新用户。但当我在Expo上启动应用程序时,他向我抛出“网络请求失败” 前端提取: submitForm=()=>{ var signupdatea=JSON.stringify({ 名字:this.state.firstName, 姓氏:this.state.lastName, 电子邮

我看了好几篇关于这个主题的帖子,但都没有结果。一方面,我有一个表单,它收集信息(姓名等),然后将其保存在数据库(mongodb)中。当我使用邮递员通过路由/注册发送信息时,一切正常,我可以在mongodb中看到我的新用户。但当我在Expo上启动应用程序时,他向我抛出“网络请求失败”

前端提取:

submitForm=()=>{
var signupdatea=JSON.stringify({
名字:this.state.firstName,
姓氏:this.state.lastName,
电子邮件:this.state.email,
密码:this.state.password
});
取回(`https://localhost:3000/signup`, {
方法:“张贴”,
标题:{“内容类型”:“应用程序/json”},
正文:Signa
})
。然后(响应=>{
控制台日志(响应);
返回response.json();
})
。然后(数据=>{
if(data.result){
this.props.handleUserValid(
这个,州,名字,
this.state.lastName,
这个.state.email,
data.user.token
);
this.props.navigation.navigate(“帐户”);
}
})
.catch(错误=>{
控制台错误(error);
});
};
和后端路由:

router.post(“/signup”),函数(req、res、next){
var盐=uid2(32);
日志(“注册正在运行…”);
const newUser=新用户模型({
第一个名称:req.body.first\U名称,
姓氏:req.body.last_name,
电子邮件:req.body.email,
密码:SHA256(req.body.password+salt).toString(encBase64),
代币:uid2(32),
盐:盐
});
保存(函数(错误,用户){
日志(“日志:用户”,用户);
res.json({result:true,user});
});
});
module.exports=路由器;
这是错误的截图

同样,当使用Postman时,提取工作正常,我的控制台日志被打印,用户被添加到我的数据库中。 谢谢你的帮助

--编辑--

我通过Expo在web浏览器中启动了该应用程序,一切都很完美。我的登录/注册页面和我的帐户页面。但在我的手机上它不工作(IOS),这是我手机的网络问题(可能是证书问题,IP错误?)


如果你有我感兴趣的想法,我已经坚持了两天了

你应该检查一下URL

  • https://localhost:3000/signup
    (X)
  • http://localhost:3000/signup
    (O)

不是HTTPS你应该检查URL

  • https://localhost:3000/signup
    (X)
  • http://localhost:3000/signup
    (O)

使用expo时,请使用设备(计算机)的IP地址(“注册”),而不是HTTPS。这种方法对我有效。确保您的电脑和手机连接到同一网络。在命令提示符中键入
ipconfig/all
,以查找IP地址

更新:


这似乎是我的问题,加上我的室友占用了wifi带宽。互联网连接速度慢也可能是一个问题。ATB解决您的问题。

使用expo时,请使用设备(计算机)的IP地址(“注册”),而不是“本地主机”。这种方法对我有效。确保您的电脑和手机连接到同一网络。在命令提示符中键入
ipconfig/all
,以查找IP地址

更新:


这似乎是我的问题,加上我的室友占用了wifi带宽。互联网连接速度慢也可能是一个问题。ATB处理您的问题。

对React native Expo和Python Django后端也有同样的问题。 问题是关于仿真器localhost和服务器localhost之间的冲突。 您的后端服务器可能正在127.0.0.1:8000上运行,但模拟器找不到

在终端中,使用命令“ipconfig”查找Ipv4地址。 例如,它将是192.138.1.40

在这之后,把它放进你的提包里( 'http://192.138.1.40:8000/)。
还有一点很重要-使用相同的主机和端口运行后端服务器。
例如,在python Django上:

py manage.py运行服务器192.138.1.40:8000


在Django上,您还需要在设置中添加允许的_HOSTS=['192.138.1.40']。 问题是关于仿真器localhost和服务器localhost之间的冲突。 您的后端服务器可能正在127.0.0.1:8000上运行,但模拟器找不到

在终端中,使用命令“ipconfig”查找Ipv4地址。 例如,它将是192.138.1.40

在这之后,把它放进你的提包里( 'http://192.138.1.40:8000/)。
还有一点很重要-使用相同的主机和端口运行后端服务器。
例如,在python Django上:

py manage.py运行服务器192.138.1.40:8000


在Django上,您还需要在settings.py中添加允许的_HOSTS=['192.138.1.40']。为我的后端。我使用json服务器模拟API数据。在我的例子中,json服务器运行在http://localhost:3000/playlist

而不是获取(“http://localhost:3000/playlist是的,我确实取了(),然后它就成功了。使用Android emulator,它找不到服务器的地址


有关使用10.0.2.2的原因,请检查此处

我对Expo也有同样的问题:获取错误。为我的后端。我使用json服务器模拟API数据。在我的例子中,json服务器运行在http://localhost:3000/playlist

而不是获取(“http://localhost:3000/playlist是的,我确实取了(),然后它就成功了。使用Android emulator,它找不到服务器的地址


有关使用10.0.2.2的原因,请检查此处

我已经试过了,它没有改变任何东西,我找不到问题的根源我已经试过了,它没有改变任何东西,我找不到问题的根源这是
fe