Unexpected token '<', "<!DOCTYPE "... is not valid JSON

2026年03月14日 13:37 状态: processing

🚨 错误信息

SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON

🤖 AI解决方案

1. 错误翻译


原文:Unexpected token '<', "译文:意外的标记‘<’,‘

2.原因分析


  • 根本原因:尝试将HTML内容(含声明)当作JSON解析,JSON解析器遇到<标记报错。

  • 发生位置:调用JSON.parse或类似方法处理接口响应时,响应实际返回的是HTML(如404/500错误页、登录页)。
  • 3. 解决方案


    以JavaScript fetch为例,修复代码:
    ``javascript
    async function safeParseJson(url) {
    try {
    const res = await fetch(url);
    if (!res.ok) throw new Error(
    HTTP ${res.status});
    // 验证响应类型
    const type = res.headers.get("content-type");
    if (!type?.includes("application/json")) {
    throw new Error(
    非JSON响应: ${type});
    }
    return await res.json();
    } catch (err) {
    // 捕获解析错误并打印原始响应(排查HTML内容)
    const raw = await fetch(url).then(r => r.text()).catch(() => "无法读取响应");
    console.error("解析失败,原始响应:", raw.slice(0, 200)); // 截断长内容
    throw err;
    }
    }
    `

    4. 预防措施


  • 最佳实践1:解析前用response.headers.get("Content-Type")验证类型为application/json

  • 最佳实践2:用try-catch`包裹JSON解析,错误时打印原始响应排查。

  • 推荐工具:用Postman测试接口返回,或浏览器DevTools→Network面板查看响应体。