解决React和Python Flask不共用端口的问题

React和Flask不共用端口的一个常见方法是使用不同的端口分别运行它们,然后使用代理将它们连接起来。在开发环境中,您可以配置React的开发服务器(使用create-react-app创建的React应用)代理请求到Flask服务器。生产环境中,您可以使用Nginx等反向代理服务器来处理这种情况。

开发环境配置

在开发环境中,您可以在React项目的package.json文件中添加一个proxy字段,将API请求代理到Flask服务器。

步骤如下:
  1. 确保React和Flask在不同端口运行

    • React开发服务器默认运行在3000端口。
    • Flask服务器可以在5000端口运行。
  2. 在React项目的package.json中添加proxy字段

在package.json中添加以下字段:

java 复制代码
"proxy": "http://localhost:5000"

启动Flask服务器

确保您的Flask应用运行在5000端口。可以通过以下命令启动:

bash 复制代码
export FLASK_APP=app.py
export FLASK_ENV=development
flask run --port 5000

启动React开发服务器

在React项目的根目录下运行:

bash 复制代码
npm start

现在,当您在React应用中发出API请求时,例如使用axios.get('/api/orders'),React开发服务器会自动将这些请求代理到运行在5000端口的Flask服务器。

生产环境配置

在生产环境中,通常会使用Nginx等反向代理服务器来管理前后端的请求。

Nginx配置示例

假设您的React应用已经打包(使用npm run build命令),并且打包后的文件存储在服务器上的某个目录中,以下是一个Nginx配置示例:

bash 复制代码
server {
    listen 80;
    server_name your_domain.com;

    location / {
        root /path_to_your_react_build;
        try_files $uri /index.html;
    }

    location /api/ {
        proxy_pass http://localhost:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

在这个配置中:

  • Nginx会处理根路径(/)的请求并返回React应用的静态文件。
  • 对/api/路径的请求会被代理到运行在5000端口的Flask服务器。

通过上述配置,React和Flask可以在不同的端口运行,且开发和生产环境都可以正常工作。开发环境使用React开发服务器的代理功能,生产环境使用Nginx等反向代理服务器。

相关推荐
默_笙4 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
qq_426003964 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫4 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技4 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读4 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
只睡四小时4 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
奇思妙想聪明勤奋的小羊4 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
lpfasd1234 天前
2026年第38周GitHub趋势周报
python·科技·github
IZero074 天前
Jev 与 Laya
python·语言模型