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

Next.js中使用SWR结合Axios获取数据返回undefined问题排查

问题排查与修复

先看你代码里的几个核心问题:

  • SWR请求Key的语法错误:
    你写的useSWR(${getcompany, getProfile)存在模板字符串未闭合的问题,少了一个}。如果是固定请求路径,直接写'/getcompany'即可;如果getcompany是变量,要写成${getcompany}(注意闭合符号)。这个语法错误会导致SWR无法正确识别请求标识,大概率请求没正常触发,所以data返回undefined。

  • 错误处理逻辑不符合SWR约定:
    在getProfile的catch块里,你直接return error,但SWR的规则是请求失败时需要抛出错误,而非返回错误。如果return error,SWR会把错误当成成功返回的数据,导致data变成error对象,同时error字段反而为空。正确写法是:

    catch (error) {
      throw error;
    }
    
  • 额外检查项:

    • 确认state?.in_memory是否持有有效的鉴权Token,如果这个值是undefined,请求会因鉴权失败返回错误,结合之前错误处理的问题,也会导致data异常。
    • 检查axiosPrivate的拦截器配置,确保请求前正确添加了Authorization头,或处理了Token过期等异常场景。

修复后的代码示例:

const getProfile = async()=>{
    try {
        const res = await axiosPrivate.get<axiosGetCompanyProfile>(`/getcompany`, {
            withCredentials: true, 
            headers: {Authorization: `${state?.in_memory}`}
        });
        console.log(res.data, 'mmmmnn')
        return res.data;
    } catch (error) {
        throw error;
    }
}

// 修复请求Key,这里假设是固定路径
const { data, error, isLoading } = useSWR('/getcompany', getProfile)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:42:35