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

当Got包因无效JSON崩溃时,如何获取响应文本?

Got获取错误响应文本的解决方法

方法一:从错误对象中提取响应文本

Got抛出的JSON解析错误(比如Unexpected token < in JSON at position 0)中,若错误来自服务器返回的响应问题,错误对象会附带response属性,其中的body字段就是未解析的原始响应文本。你可以在catch块中判断后获取:

import got from "got";

try {
    await got('https://google.com').json();
} catch (e) {
    // 先判断是否存在响应对象,排除无响应的网络错误
    if (e.response) {
        console.log("错误响应内容:", e.response.body);
    } else {
        console.log("网络异常:", e);
    }
}

方法二:先获取原始响应再手动解析JSON

如果API返回格式不稳定,更稳妥的方式是先获取原始文本,再自行尝试解析JSON。这样无论解析成功与否,都能拿到完整的响应内容:

import got from "got";

// 先获取原始文本响应
const rawResponse = await got('https://google.com').text();
try {
    const jsonData = JSON.parse(rawResponse);
    // 处理正常的JSON数据
} catch (parseErr) {
    console.log("JSON解析失败,原始响应:", rawResponse);
}

补充说明

  • Got的错误对象中,response属性仅在服务器返回HTTP响应(哪怕状态码是4xx/5xx)时存在;如果是DNS解析失败、连接超时这类网络错误,不会有response,所以需要先做判断避免报错。
  • 除了body,e.response还包含状态码、响应头等信息,你可以根据需求获取e.response.statusCode、e.response.headers等内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:52:02