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

NestJS使用@nestjs/axios启动报错:无法解析HttpService的AXIOS_INSTANCE_TOKEN依赖

错误根源

这个报错由HttpModule、HttpService的错误配置导致,核心问题如下:

  • 你将模块类HttpModule放在了providers数组中,只有可注入的服务类才能放在providers里,模块仅可放在imports数组中
  • 你在两个模块的providers中重复手动声明了HttpService,HttpService是HttpModule内部导出的服务,无需手动声明,手动声明会导致Nest尝试实例化HttpService时找不到它依赖的AXIOS_INSTANCE_TOKEN
  • 你在根模块配置了自定义参数的HttpModule,但子模块导入的是原始未配置的HttpModule,没有复用根模块的配置

修复步骤

第一步:修正AppModule配置

给HttpModule的异步注册配置添加isGlobal: true设为全局生效,同时删掉providers和exports中多余的HttpModule、HttpService声明:

@Module({
  imports: [
    FileModule,
    ConfigurationModule,
    AxelGlobeModule,
    HttpModule.registerAsync({
      isGlobal: true, // 新增全局生效配置,所有子模块无需重复导入
      imports: [ConfigModule],
      useFactory: async (configService: ConfigService) => ({
        timeout: configService.get('HTTP_TIMEOUT') || 1000,
        maxRedirects: configService.get('HTTP_MAX_REDIRECTS') || 5,
        baseURL: `{url}`,
        paramsSerializer: (params) => {
          return qs.stringify(
            params,
            PARAMS_SERIALIZER_DEFAULT_OPTIONS as IStringifyOptions,
          );
        },
      }),
      inject: [ConfigService],
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})

第二步:修正AxelGlobeModule配置

删掉imports里的HttpModule、providers里的HttpService,无需重复导入和声明:

@Module({
  controllers: [AxelGlobeController],
  providers: [AxelGlobeService],
  imports: [ConfigModule] // 如无需在该模块使用ConfigService可直接删除该行
}) 

第三步:验证业务注入

你原有的注入代码无需修改,直接正常使用即可:

constructor(private readonly httpService: HttpService) {}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:45:05