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

Nest JS服务层调用Axios请求Facebook API返回null问题排查

NestJS中Axios请求Service返回null问题修复

问题根因

你的代码一共有4处核心编写错误:

  • 变量未正确赋值:你在方法开头定义了初始值为null的response变量,但axios请求的返回结果从未赋值给这个变量。.then()回调里的return res.data只是将值传递给Promise链的后续环节,不会修改外部的response变量,因此最后返回的始终是初始值null。
  • 存在不可达的死代码:你在.then()回调中把console.log(res.data)写在了return res.data之后,return语句执行后回调函数会直接退出,这行打印逻辑永远不会执行。
  • Controller层未返回执行结果:Controller的getCampaign方法仅调用了Service方法,没有将执行结果return给Nest框架,即使Service返回正确,接口也会给客户端返回空响应。
  • 异常处理逻辑不规范:.catch()中直接return错误对象会把异常当成正常业务结果返回,不会触发Nest自带的异常处理机制,容易导致前端响应格式异常。

修正后代码

Service层代码(推荐直接使用async/await写法,避免和.then/.catch混用导致逻辑混乱)

async readCampaign(dto: ParamCampaignDto) {
  try {
    const res = await axios.get(`https://graph.facebook.com/v14.0/act_${dto.accountId}/campaigns?access_token=${dto.accessToken}`)
    console.log(res.data)
    return res.data
  } catch (err) {
    // 可根据业务需求抛出对应Nest标准异常,例如throw new BadRequestException('拉取广告数据失败')
    throw err
  }
}

Controller层代码

@Get()
async getCampaign(@Query() dto: ParamCampaignDto) {
  return this.adsService.readCampaign(dto)
}

优化提示:NestJS本身内置了基于Axios封装的HttpModule,在Nest项目中优先使用内置模块做HTTP请求,更适配框架的拦截器、异常过滤器等能力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 21:00:56