NodeJS 在Nest.JS的模块中使用另一个模块方法

qq24tv8q  于 2023-08-04  发布在  Node.js
关注(0)|答案(1)|浏览(150)

我试图创建一个系统,我可以为不同的模块创建不同的axios示例。
我面临的问题是,我无法提供自定义的baseURL的服务。
尝试使用“useFactory”来执行此操作,但“axiosService”被解析为未定义。

  • webhook.module.ts*
@Module({
  imports: [AxiosModule],
  providers: [
    {
      provide: 'WebhookClient',
      useFactory: (axiosService: AxiosService) => {
        console.log(axiosService); // undefined
        return axiosService.create('http://apiurl.com/api');
      },
    },
  ],
})
export class WebhookModule {}

字符串

  • axios.module.ts*
export const AXIOS_INSTANCE_TOKEN = 'AXIOS_INSTANCE_TOKEN';

@Module({
  providers: [AxiosService, { provide: AXIOS_INSTANCE_TOKEN, useValue: axios }],
  exports: [AxiosService],
})
export class AxiosModule {}

  • axios.service.ts*
@Injectable()
export class AxiosService extends HttpService {
  async create(url: string) {
    return axios.create({
      baseURL: url,
      headers: {
        'Content-Type': 'application/json',
      },
    });
  }
}

eqoofvh9

eqoofvh91#

你已经错过了inject属性在工厂提供程序.由于TS反射的限制,没有办法告诉NestJS你想注入没有这样属性的AxiosService。阅读文档:https://docs.nestjs.com/fundamentals/custom-providers#factory-providers-usefactory

相关问题