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

Create React App/CRACO配置Webpack Proxy遇504网关超时问题

解决React CRAco代理到Flask服务器的504超时问题

以下是针对问题的可行解决方案,按优先级尝试:

1. 完善代理核心配置

你的代理配置缺少路径重写规则,且可能存在地址解析、超时时间过短的问题。修改craco.config.ts的代理部分:

export = {
    mode: 'development',
    devServer: {
        port: 3000,
        open: true,
        historyApiFallback: true,
        proxy: {
            '/api': {
                target: 'http://127.0.0.1:8050', // 替换为127.0.0.1避免localhost解析优先级问题
                secure: false,
                changeOrigin: true,
                logLevel: "debug",
                headers: {
                    Connection: 'keep-alive'
                },
                pathRewrite: {'^/api': ''}, // 移除请求路径中的/api前缀,匹配Flask实际路由
                timeout: 10000 // 延长超时时间,避免请求未完成就被中断
            },
        },
    },
};

2. 验证代理转发逻辑

用curl测试代理是否正常工作,对比直接请求Flask的结果:

# 测试代理转发
curl http://localhost:3000/api/comp

# 测试直接访问Flask
curl http://localhost:8050/comp

如果两者返回结果不一致,说明路径重写或地址配置仍有问题。

3. 排查Flask debug模式冲突

Flask的debug=True模式会启用自动重载机制,可能导致代理连接不稳定。尝试关闭debug模式启动:

app.run(
    host="0.0.0.0",
    port=8050,
    debug=False,
)

4. 确认端口与网络状态

检查8050端口是否被其他进程占用:

# Windows系统
netstat -ano | findstr :8050

# macOS/Linux系统
lsof -i :8050

确保Flask确实监听在该端口,且本地防火墙未拦截请求。

关于硬编码CORS可行的原因

直接在React中硬编码localhost:8050是浏览器发起跨域请求,Flask的CORS配置允许了跨域访问;而代理是通过React开发服务器转发请求到Flask,问题出在代理的转发逻辑(路径、超时、地址解析),而非跨域本身。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 20:01:33