Как исправить AXIOS_INSTANCE_TOKEN в индексе [0] доступно в контексте модуля - PullRequest
0 голосов
/ 01 августа 2020

Я использую Ax ios в своем проекте для вызова сторонних конечных точек. Кажется, я не понимаю ошибку

Nest can't resolve dependencies of the HttpService (?). Please make sure that the argument 
AXIOS_INSTANCE_TOKEN at index [0] is available in the TimeModule context.

Potential solutions:
- If AXIOS_INSTANCE_TOKEN is a provider, is it part of the current TimeModule?
- If AXIOS_INSTANCE_TOKEN is exported from a separate @Module, is that module imported within TimeModule?
  @Module({
    imports: [ /* the Module containing AXIOS_INSTANCE_TOKEN */ ]
  })

Это модуль

@Module({
  imports: [TerminalModule,],
  providers: [TimeService, HttpService],
  controllers: [TimeController]
})
export class TimeModule { }

Это сервис

@Injectable()
export class TimeService {
    constructor(private httpService: HttpService,
        @InjectModel('PayMobileAirtime') private time: Model<Time>,       
        @Inject(REQUEST) private request: any,

    ) { }

Это пример одного из моих get и post методы

 async PrimeAirtimeProductList(telcotime: string) {
        let auth = await this.TimeAuth()
        const productList = await this.httpService.get(`https://clients.time.com/api/top/info/${telcotime}`,
            {
                headers: {
                    'Authorization': `Bearer ${auth.token}`
                }
            }
        ).toPromise();

        return productList.data
    }

Post

const dataToken = await this.manageTimeAuth()
        const url = `https://clients.time.com/api/dataup/exec/${number}`

        const BuyTelcoData = await this.httpService.post(url, {
            "product_id": product_id,
            "denomination": amount,
            "customer_reference": reference_id
        }, {
            headers: {
                'Authorization': `Bearer ${dataToken.token}`
            }
        }).toPromise();

        const data = BuyTelcoData.data;

1 Ответ

1 голос
/ 01 августа 2020

Импортировать HttpModule из @nestjs/common в TimeModule и добавить его в массив imports.

Удалить HttpService из массива providers в TimeModule. Вы можете напрямую импортировать его в TimeService.

import { HttpModule } from '@nestjs/common';
...

@Module({
    imports: [TerminalModule, HttpModule],
    providers: [TimeService],
    ...
})

TimeService:

import { HttpService } from '@nestjs/common';

Если ваш тип ответа Observable типа AxiosResponse, затем импортируйте эти два а также в служебном файле TimeService.

import { Observable } from 'rxjs';
import { AxiosResponse } from 'axios';

Для справки просмотрите http-module и этот пост .

...