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

Axios请求返回值为undefined:then/catch可正常打印数据

问题分析与修复

你的问题出在**loginManager函数里的then()回调没有返回值**,同时混合使用async/await和then/catch写法导致逻辑混乱。

问题根源

  1. 请求成功时,then((res) => { console.log(res.data); })里只做了打印,没有返回任何数据,所以await这个Promise链的结果是undefined,最终response变量就是undefined,返回给调用方的data自然也是undefined。
  2. 虽然catch()里做了返回,但成功路径没有返回值,导致成功场景下数据无法传递。
  3. async/await本身就是用来替代then/catch的,混合使用反而容易出错,代码可读性也差。

修复后的loginManager代码

import axios from "axios";

const api = axios.create({
  baseURL: "http://localhost:8080/",
});

export const loginManager = async (values) => {
  try {
    const res = await api.post("auth/login", values);
    console.log(res.data);
    // 成功时返回响应数据
    return res.data;
  } catch (error) {
    if (error.response) {
      console.log(error.response.data);
      console.log(error.response.status);
      console.log(error.response.headers);
      return error.response.data;
    } else if (error.request) {
      console.log(error.request);
      return error.request;
    } else {
      console.log('Error', error.message);
      return error.message;
    }
  }
};

export default api;

修复说明

  • 用try/catch替代then/catch,和async/await写法统一,逻辑更清晰。
  • 请求成功时,在try块里获取响应后返回res.data,确保调用方能拿到数据。
  • 错误处理逻辑保留,但整合到catch块中,错误时返回对应的错误信息,调用方的data就能捕获到错误数据。

调用端代码无需修改

你的组件里的onSubmit逻辑没问题,修复loginManager后,const data = await loginManager(values);就能正常获取到成功的响应数据或错误信息了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:55:13