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

转发axios响应时出现Converting circular structure to JSON错误的原因是什么

错误触发原因解释

核心问题是你错误将完整的Axios响应对象直接序列化返回,该对象内置存在循环引用的字段,无法转换为JSON格式
具体触发逻辑如下:

  1. await axios.put()的返回值是Axios封装的完整响应对象,并非第三方接口返回的原始业务数据。除了业务数据外,该对象还包含请求配置、底层请求实例、响应头、HTTP状态码等附加字段,结构示意:
{
  data: {}, // 第三方接口返回的原始业务数据,无循环引用
  status: 200,
  statusText: 'OK',
  headers: {}, // 响应头集合
  config: {}, // 发起Axios请求时的全量配置,部分字段会引用对应的请求实例
  request: {} // 底层HTTP请求实例,浏览器环境为XMLHttpRequest实例,Node环境为http.ClientRequest实例,内置大量循环引用:例如请求实例的response属性会直接指回当前这个Axios响应对象本身
}
  1. 调用res.json(ax)时,你使用的Web框架会自动调用JSON.stringify()对传入的ax对象做序列化处理。JSON.stringify本身不支持处理存在循环引用的结构(即A对象的属性指向B,B的属性又指回A的嵌套引用关系),遍历到request或config字段中的循环引用关系时,就会抛出你遇到的TypeError: Converting circular structure to JSON错误。

修复方案

如果只需要返回第三方接口的业务数据,直接提取ax.data字段返回即可:

const userController = async (req,res)=>{
  const ax = await axios.put(someURL, reqBody)
  res.status(200).json(ax.data)
}

如果需要同时返回HTTP状态码、响应头等信息,手动提取需要的字段即可,不要直接返回完整的Axios响应对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:54:01