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

能否无需构建React应用即可同时运行Flask+React进行开发?

开发环境下React+Flask联动方案

为什么直接指向frontend/public会404?

React的public目录仅存放未编译的静态资源(如favicon、原始index.html),npm run start启动的开发服务器会在内存中实时编译代码,不会将编译后的JS/CSS文件输出到public目录。因此Flask直接将静态目录指向public时,找不到React应用的核心编译文件,自然返回404。

可行方案1:Flask代理React开发服务器

通过Flask将非API请求转发到React开发服务器,实现单端口同时访问前端和后端,且保留React热重载功能。

操作步骤:

  1. 安装代理依赖
    在Flask项目根目录执行:
pip install flask-proxy
  1. 修改Flask主文件(如app.py)
    添加代理逻辑,优先处理API路由,其余请求转发到React开发服务器(默认端口3000):
from flask import Flask, abort
from flask_proxy import Proxy

app = Flask(__name__, static_folder='frontend/build', static_url_path='')
proxy = Proxy(app)

# 先定义你的API路由
@app.route('/api/example')
def example_api():
    return {'data': '来自Flask的响应'}

# 代理所有非API请求到React开发服务器
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def forward_to_react(path):
    if not path.startswith('api/'):
        return proxy.request(f'http://localhost:3000/{path}')
    return abort(404)

if __name__ == '__main__':
    app.run(debug=True)
  1. 启动服务
  • 先进入frontend目录启动React开发服务器:
cd frontend && npm run start
  • 再在项目根目录启动Flask:
flask run

此时访问http://localhost:5000即可看到React开发页面,API请求会直接由Flask处理,React修改代码后会自动热重载。

可行方案2:分开运行+React代理(更简洁)

如果不想配置Flask代理,分开运行两个服务是更简单的选择:

  1. 分别启动React开发服务器(localhost:3000)和Flask(localhost:5000)
  2. 在React项目的package.json中添加一行配置:
"proxy": "http://localhost:5000"

这样前端发送API请求时,直接写/api/example即可自动转发到Flask,无需填写完整域名和端口。

总结

  • 直接指向frontend/public不可行,因为React开发阶段的编译产物不在该目录
  • 推荐两种开发模式:
    • 用Flask代理React开发服务器,实现单端口访问
    • 分开运行服务,借助React的proxy配置转发API请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:17:29