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

运行React应用报SyntaxError: Unexpected token <错误如何解决?

报错原因分析

该错误的核心是fetch请求返回的响应内容不是合法JSON格式,而是以<开头的HTML文本,通常是后端返回的404、500错误页,或是代理配置错误、SPA fallback返回的前端页面内容,调用result.json()解析HTML内容时就会触发该语法错误。

排查步骤
  • 打开浏览器控制台「网络」面板,找到对应的/api/foodies/${name}请求,查看响应状态码和返回内容:
    • 状态码为404:检查接口路径拼写是否正确,后端对应路由是否存在
    • 状态码为500:后端服务内部运行错误,需排查后端接口逻辑
    • 状态码为200但返回内容是HTML:本地开发代理配置错误,请求没有被转发到后端服务,反而返回了React应用的index.html
  • 检查依赖项name的值,确认没有空值、特殊字符、空格等导致路由拼接错误的内容
修复方案

首先给请求加状态校验和异常捕获,避免未处理的Promise报错,修改后的代码如下:

useEffect(() => {
    const fetchData = async () => {
      try {
        // 过滤无效参数,避免发起错误请求
        if (!name?.trim()) return
        const result = await fetch(`/api/foodies/${name}`);
        // 先校验响应状态是否正常
        if (!result.ok) {
          throw new Error(`请求失败,状态码:${result.status}`)
        }
        // 调试阶段可先打印原始响应内容确认格式,调试完成后可删除
        // const rawText = await result.text()
        // console.log('接口返回原始内容:', rawText)
        // const body = JSON.parse(rawText)
        const body = await result.json();
        console.log(body);
        setFoodieInfo(body);
      } catch (err) {
        // 统一捕获请求、解析阶段的所有错误
        console.error('获取信息失败:', err)
      }
    };
    fetchData();
  }, [name]);
  • 若为代理配置错误:检查项目代理规则(create-react-app项目可检查package.json的proxy字段,或是自定义的代理配置文件),确保/api前缀的请求正确转发到后端服务地址
  • 若为后端路由错误:修正后端路由规则,确保/api/foodies/${name}接口存在,且返回标准JSON格式响应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:36:03