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

如何修复Expo React Native中的Axios -404(ERR_BAD_REQUEST)错误?

排查Expo React Native中Axios POST请求404问题的实用步骤

1. 先确认后端POST接口是否真的存在

Postman GET请求能通不代表/auth/login的POST路由已配置,比如用Express的后端,得确保有类似这样的代码:

app.post('/auth/login', (req, res) => {
  // 这里是登录逻辑
})

别只写了GET路由就完事。

2. 检查请求头和数据格式是否匹配后端要求

Axios默认会把POST数据转成JSON格式(Content-Type: application/json),但有些后端可能只接受表单格式(application/x-www-form-urlencoded),或者没开启JSON解析中间件:

  • 如果后端需要JSON:先确认后端加了解析中间件,比如Express的express.json()
  • 如果需要表单格式:修改请求代码,用qs库处理数据:
    import qs from 'qs';
    
    axios.post(`http://myip:19000/auth/login`, qs.stringify({
      email: email.value,
      password: password.value,
    }), {
      headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
    })
    

3. 验证请求数据是否有效

先打印email.value和password.value,确认这俩值是对的,没有空值或格式错误(比如邮箱少了@、密码长度不够)。也可以直接把这俩值复制到Postman里发POST请求,如果Postman也失败,那问题肯定在后端;如果Postman能成功,再找前端和Postman请求的差异。

4. 检查Expo的网络访问配置

如果是在模拟器或真机上测试:

  • Android模拟器访问本地后端,要把myip换成10.0.2.2
  • iOS模拟器可以用localhost或者你的实际IP
  • 还要确保后端开启了跨域允许,比如用cors中间件允许Expo设备的IP访问

5. 打印完整错误信息定位问题

把Axios的错误详情打出来,看后端返回的具体提示:

axios.post(`http://myip:19000/auth/login`, {
    email: email.value,
    password: password.value,
  })
  .catch(err => {
    console.log('后端返回的错误内容:', err.response?.data);
    console.log('状态码:', err.response?.status);
    console.log('错误消息:', err.message);
  })

这些信息能直接告诉你是路由不存在、参数错了还是权限问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 09:54:59