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

React请求Node.js后端JSON返回HTML,报SyntaxError错误求助

问题解决方案

核心问题:请求路径不匹配

你的后端将支付相关路由挂载在了/api前缀下,但前端请求时未添加该前缀,导致请求被React单页应用的路由机制接管,返回了前端的index.html文件,进而触发JSON解析错误。

具体修复步骤:

  1. 修正前端请求路径
    修改ApiCalls.js中的请求地址,补充/api前缀:
export const getOrder=()=>{
    return fetch(`${process.env.REACT_APP_BACKEND}/api/createorder`,{
        method: "GET",
        headers: {
            'Content-Type':'application/json'
        }
    }).then(response=>response.json())
    .catch((err)=>console.log(err))
}
  1. 验证环境变量配置
    确保前端项目.env文件中的REACT_APP_BACKEND值正确,格式应为http://localhost:5000(注意不要在末尾添加斜杠)。

  2. 确认后端接口可用性
    先在浏览器直接访问http://localhost:5000/api/createorder,检查是否能返回正常的JSON数据,示例格式如下:

{
  "id": "order_xxxxxx",
  "entity": "order",
  "amount": 50000,
  "currency": "INR",
  ...
}
  1. 可选:配置React代理简化路径
    如果不想每次请求都写全路径,可以在前端项目的package.json中添加proxy字段,实现请求自动转发:
"proxy": "http://localhost:5000"

之后ApiCalls.js可简化为:

export const getOrder=()=>{
    return fetch('/api/createorder',{
        method: "GET",
        headers: {
            'Content-Type':'application/json'
        }
    }).then(response=>response.json())
    .catch((err)=>console.log(err))
}

额外检查项

  • 确认后端服务在5000端口正常启动,控制台输出App is running at 5000 port。
  • 检查后端.env文件中的KEY_ID和SECRET_KEY是否正确配置,确保Razorpay实例初始化正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:25:26