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

用户注册时出现Uncaught (in promise) SyntaxError无效JSON错误求助

错误原因分析

这个错误的核心是前端尝试解析JSON格式响应,但后端返回的是HTML内容(比如404错误页面、服务器错误页面的<!DOCTYPE>开头内容),导致data.json()解析失败。常见触发场景:

  • 后端/register的POST路由未正确配置,请求匹配失败,返回404 HTML页面
  • 后端处理注册逻辑时抛出异常,返回了HTML格式的错误页面而非JSON响应
  • 后端未设置响应的Content-Type为application/json(前两种情况更常见)
解决步骤

1. 排查后端接口有效性

  • 用curl/Postman直接测试后端/register接口,替换成你的服务地址:
    curl -X POST -H "Content-Type: application/json" -d '{"fname":"test","email":"test@example.com","password":"123456","cpassword":"123456"}' http://localhost:3000/register
    
    查看返回内容:如果是HTML,说明路由不存在或后端出错;如果是JSON,再检查格式是否合规。
  • 确认后端/register路由的请求方法为POST,路径完全匹配(注意大小写、是否有前缀)。

2. 前端增加错误处理逻辑

在解析JSON前先校验响应,避免直接解析非JSON内容,同时方便排查问题:

const data = await fetch("/register",{
    method: "POST",
    headers:{
        "Content-Type": "application/json"
    },
    body: JSON.stringify({
        fname, email, password, cpassword
    })
});

// 先检查请求是否成功
if (!data.ok) {
    const errorContent = await data.text();
    console.error("后端返回错误内容:", errorContent);
    toast.error("注册失败,请检查后端服务");
    return;
}

// 校验响应是否为JSON类型
const contentType = data.headers.get("content-type");
if (!contentType || !contentType.includes("application/json")) {
    const nonJsonContent = await data.text();
    console.error("后端返回非JSON内容:", nonJsonContent);
    toast.error("服务器响应格式错误");
    return;
}

const res = await data.json();

if (res.status === 201) {
    toast.success("Registration Successfully done 😃!", {
        position: "top-center"
    });
    setInpval({ ...inpval, fname: "", email: "", password: "", cpassword: "" });
}

3. 后端确保返回JSON响应

  • 无论注册成功还是失败,后端都要返回JSON格式数据,并设置响应头Content-Type: application/json
    示例(Node.js/Express环境):
    // 成功响应
    res.status(201).json({ status: 201, message: "注册成功" });
    // 失败响应(如密码不一致)
    res.status(400).json({ status: 400, message: "两次输入密码不一致" });
    
  • 避免后端出错时返回HTML页面,统一用JSON格式返回错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 08:07:28