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

React组件中使用Axios调用Express接口获取数据失败

解决React通过Axios请求Express接口的网络错误问题

你的问题大概率是跨域资源共享(CORS)或者端口冲突导致的,以下是具体的排查和解决步骤:

1. 检查端口冲突

如果你的React项目是用create-react-app创建的,默认会运行在3000端口,而你的Express服务器也配置了监听3000端口,这会导致其中一个服务无法启动。但你提到服务器正常运行,说明React可能运行在其他端口(比如3001),此时两个服务属于不同源,浏览器会拦截跨域请求。

解决端口冲突:

修改Express服务器的端口,比如改成3001:

const PORT = process.env.PORT || 3001;

同时更新React组件中的请求地址:

axios.get('http://localhost:3001/api/books')

2. 配置CORS允许跨域请求

即使端口不冲突,只要前端和后端的域名/端口不同,就需要在Express中配置CORS来允许前端的请求:

步骤:

  1. 安装cors中间件:
npm install cors
  1. 在Express代码中引入并使用cors:
const express = require('express');
const cors = require('cors'); // 新增
const app = express();

app.use(cors()); // 新增,允许所有跨域请求

const books = [
  { id: 1, title: 'Harry Potter and the Sorcerer\'s Stone', author: 'J.K. Rowling' },
  { id: 2, title: 'The Hobbit', author: 'J.R.R. Tolkien' },
  { id: 3, title: 'To Kill a Mockingbird', author: 'Harper Lee' }
];

app.get('/api/books', (req, res) => {
  res.json(books);
});

const PORT = process.env.PORT || 3001; // 修改端口避免冲突
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

3. 验证请求

完成上述修改后:

  • 重启Express服务器
  • 重新启动React项目
  • 打开浏览器控制台,查看是否还有网络错误,同时确认/api/books接口能正常返回数据

如果还有问题,可以检查:

  • 浏览器控制台的具体错误信息(比如是否是404,说明请求地址写错)
  • 确认Express服务器确实在监听修改后的端口
  • 确保Axios已正确安装(npm install axios)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:40:17