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

调试React与Flask连接时报SyntaxError: Unexpected token < in JSON错误

问题原因&解决方案

1. 修复fetch调用语法错误

你的fetch链式调用缺少返回值,导致第二个then拿不到解析后的JSON数据,同时提前打印未完成解析的Promise对象才会输出Promise {<pending>},正确写法如下:

clicked() {
    fetch('/api/')
    // 这里需要把res.json()返回给下一个链式调用,不能只做打印操作
    .then(res => res.json())
    .then(data => {
        console.log(data);
    })
    .catch(err => {
        console.error('请求错误:', err);
    })
}

2. 解决请求路径被React开发服务器拦截问题

你当前请求的是根路径/,Create React App的开发服务器会默认将根路径的请求返回React的入口HTML文件,不会转发给代理的Flask服务,所以你拿到的实际是HTML文本,解析JSON时就会报Unexpected token <的错误,按以下步骤修改:

修改Flask接口前缀

给所有Flask接口统一加/api前缀,避免和React的路由、静态资源路径冲突:

from flask import Flask

app = Flask(__name__)

@app.route("/api/")
def home():
    return {"msg": "homepage from the backend."}

if __name__ == "__main__":
    app.run(port=5000, debug=True)

可选:跨域兼容处理

如果修改路径后仍有跨域问题,可以给Flask安装跨域依赖解决:

  • 安装依赖:pip install flask-cors
  • 开启全局跨域:
from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

@app.route("/api/")
def home():
    return {"msg": "homepage from the backend."}

if __name__ == "__main__":
    app.run(port=5000, debug=True)

所有修改完成后重启前端、后端服务即可正常调用接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:39:02