You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native Expo中Axios POST请求/register接口404问题解决

解决React Native Expo向/register发送POST请求的路由问题

1. 修正请求端口与地址

你的API服务器运行在3000端口,但前端请求的是19000端口(Expo开发服务器的默认端口),这是导致404错误的核心原因。

调整前端请求地址

修改SignupScreen.js中的Axios请求地址:

axios.post("http://[你的电脑局域网IP]:3000/register", user)
  • 替换[你的电脑局域网IP]:在Ubuntu终端执行ip addr show,找到局域网内的IP地址(通常格式为192.168.x.x)
  • 确保物理Android设备和电脑连接在同一WiFi网络下

2. 修复API代码中的潜在问题

你的API代码存在几处逻辑错误,会导致后续功能故障,提前修正:

  • 模型引用错误:你引入的是Donor模型,但在verify和login路由中误用了User.findOne,需统一替换为Donor.findOne
    修正后的验证路由示例:
    app.get("/verify/:token", async (req, res) => {
      try {
        const token = req.params.token;
        const user = await Donor.findOne({ verificationToken: token }); // 替换User为Donor
        if (!user) {
          return res.status(404).json({ message: "Invalid token" });
        }
        user.verified = true;
        user.verificationToken = undefined;
        await user.save();
        res.status(200).json({ message: "Email verified successfully" });
      } catch (error) {
        console.log("error getting token", error);
        res.status(500).json({ message: "Email verification failed" });
      }
    });
    
    登录路由同理,将User.findOne替换为Donor.findOne

3. 验证API端点可用性

在电脑浏览器中用POST请求工具(如Postman、浏览器插件)访问http://[你的电脑局域网IP]:3000/register:

  • 若返回400(邮箱已注册)或200(注册成功),说明API端点正常
  • 若仍返回404,检查API服务器是否正常启动,以及app.post("/register")代码是否存在语法错误导致路由未加载

4. 确保网络与防火墙配置正常

  • 测试物理设备能否ping通电脑的局域网IP,排除网络连接问题
  • 临时关闭Ubuntu防火墙测试:执行sudo ufw disable,确认3000端口未被拦截

5. 测试前端请求

修改地址后重新运行Expo项目,点击注册按钮,检查请求是否成功。若仍有报错,查看Axios的错误详情,确认请求地址、参数是否正确。

内容的提问来源于stack exchange,提问作者Aria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 23:50:59