我试图创建一个系统,我可以为不同的模块创建不同的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',
},
});
}
}
型
1条答案
按热度按时间eqoofvh91#
你已经错过了
inject
属性在工厂提供程序.由于TS反射的限制,没有办法告诉NestJS你想注入没有这样属性的AxiosService
。阅读文档:https://docs.nestjs.com/fundamentals/custom-providers#factory-providers-usefactory