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

传递URL对象作为Fetch参数时,响应无法转换为JSON的问题

问题原因与解决方案

核心问题

从你提供的响应日志里能看到status: 404,这说明你请求的https://some-base-domain.com/traffic资源不存在,服务器返回了404错误。而body: { stream: undefined }是因为404响应的内容要么不是有效JSON格式,要么响应体已经被内部处理过,导致无法正常解析为可读流。

虽然Fetch确实支持传入URL对象,但你的URL构造逻辑没问题,问题根源在目标接口不存在。

解决方法

  1. 确认接口有效性
    直接在浏览器或调试工具里访问https://some-base-domain.com/traffic,确认这个接口是否存在、是否能返回合法的JSON内容。

  2. 完善错误处理逻辑
    在代码里先判断响应状态,避免直接调用res.json()导致报错:

const url = new URL(
  '/traffic',
  'https://some-base-domain.com'
)
const [err, res] = await to(fetch(url))

if (err) {
  console.error(err)
  return
}

// 先检查响应状态是否处于正常范围(2xx)
if (!res.ok) {
  console.error(`请求失败,状态码:${res.status}`);
  // 读取错误响应的文本内容,排查服务器返回的具体错误信息
  const errorContent = await res.text();
  console.error('服务器返回错误:', errorContent);
  return;
}

const data = await res.json()
return data
  1. 验证URL正确性
    可以先打印url.toString(),确认最终拼接出的请求地址是否和预期一致,避免路径拼接时出现意外错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 23:05:21