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
相关产品推荐
相关产品推荐

