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

NestJS使用@nestjs/axios时AxiosRequestConfig类型不兼容如何解决

问题根源

你的项目中存在两份不同版本的axios类型定义,导致类型不兼容:

  • 一份是@nestjs/axios@0.0.3内置依赖的axios@0.23.0
  • 另一份是项目根目录node_modules下你单独安装的其他版本axios
    两个版本对TransitionalOptions的字段必填规则定义不同,所以你手动声明的AxiosRequestConfig和HttpService要求的入参类型匹配失败。

解决方案

方案1:复用@nestjs/axios内置的axios类型(最快修复)

不要从项目根目录的axios包导入AxiosRequestConfig,选择以下任意一种方式调整即可:

  • 省略config的显式类型声明,让TS自动推导类型:
private _loginAndChangeToken(): Observable<LoginResponse> {
  // 去掉AxiosRequestConfig类型声明,TS会自动匹配正确的类型
  const config = {
    auth: {
      username: MAILAPI_USERNAME,
      password: MAILAPI_PASSWORD,
    },
  };
  return this.httpService.get<LoginResponse>(MAILAPI_LOGIN_PATH, config).pipe(
    map((response) => response.data),
    tap(({ token }) => {
      this.token = token;
    }),
  );
}
  • 统一从@nestjs/axios依赖的axios导入类型:
import type { AxiosRequestConfig } from '@nestjs/axios/node_modules/axios';

方案2:对齐axios版本(从根源解决冲突)

把项目中单独安装的axios版本降级到和@nestjs/axios依赖的版本一致,也就是0.23.0:

npm install axios@0.23.0
# 用yarn的话执行:yarn add axios@0.23.0

安装完成后删除node_modules和package-lock.json/yarn.lock文件,重新安装依赖即可确保项目中只有一份axios实例。

方案3:临时跳过类型检查(应急用,不推荐)

如果只是临时调试不想改依赖,可以给config加类型断言绕过检查:

return this.httpService.get<LoginResponse>(MAILAPI_LOGIN_PATH, config as any).pipe(
  // 后续逻辑不变
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:24:05