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

MERN电商项目从后端获取产品时出现JSON解析错误求助

排查MERN电商应用fetch返回HTML而非JSON的问题

这个错误的核心是你的前端fetch请求没有拿到预期的JSON数据,反而接收到了HTML内容(大概率是前端的index.html或者后端的404页面),下面是具体排查步骤:

  • 检查fetch请求的URL是否正确
    打开client/src/products.js,确认fetch的目标地址。比如如果后端运行在localhost:5000,请求应该是fetch('http://localhost:5000/api/products');如果只写了fetch('/api/products'),而前端dev server(默认3000端口)没有配置代理,这个请求会被发送到前端服务器,返回index.html,就会触发这个错误。

  • 验证后端API是否正常响应
    直接在浏览器地址栏访问后端的产品接口(比如http://localhost:5000/api/products),如果返回的是JSON数据,说明后端没问题;如果返回HTML或者404,那要检查:

    • 后端server/routes/products.js里的路由是否正确配置,是否有res.json()返回产品数据的逻辑
    • 后端服务器是否正常启动,server目录下执行yarn start后控制台有没有报错
  • 配置前端代理(推荐方案)
    如果你用的是Create React App搭建的前端,在client/package.json里添加一行"proxy": "http://localhost:5000"(替换成你的后端端口),这样前端的fetch('/api/products')会自动转发到后端服务器,既解决跨域问题,又能确保请求到正确的接口。

  • 检查后端CORS配置
    如果后端没有配置跨域允许,前端直接访问不同端口的后端可能被拦截。确保后端server.js里已经引入并使用了cors中间件:

    const cors = require('cors');
    app.use(cors());
    
  • 确认前后端端口不冲突
    前端默认启动在3000端口,后端要确保用的是其他端口(比如5000),避免端口被占用导致其中一方启动失败,请求无法到达后端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:15:40