模块上下文中提供了如何修复索引 [0] 处的 AXIOS_INSTANCE_TOKEN

Posted

技术标签:

【中文标题】模块上下文中提供了如何修复索引 [0] 处的 AXIOS_INSTANCE_TOKEN【英文标题】:How to fix AXIOS_INSTANCE_TOKEN at index [0] is available in the Module context 【发布时间】:2020-11-22 06:32:59 【问题描述】:

我在我的项目中使用 Axios 来调用一些第三方端点。我似乎不明白 错误

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,

    )  

这是我的 getpost 方法之一的示例

 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
    

发帖

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;

【问题讨论】:

请同时提供 HttpService 的代码。另外,AXIOS_INSTANCE_TOKEN 到底是什么,它在哪里定义? 我的代码已更新 尝试在“TimeModule”模块的“imports”数组中添加“HttpModule”。确保首先在模块中导入它。 看到这个docs.nestjs.com/techniques/http-module 【参考方案1】:

TimeModule 中的@nestjs/common 导入HttpModule,并将其添加到imports 数组中。

TimeModule 中的providers 数组中删除HttpService。可以直接在TimeService中导入。

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

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

时间服务:

import  HttpService  from '@nestjs/common';

如果您的响应类型是AxiosResponse 类型的Observable,则将这两个也导入服务文件TimeService

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

作为参考,请查看http-module 和此post。

【讨论】:

以上是关于模块上下文中提供了如何修复索引 [0] 处的 AXIOS_INSTANCE_TOKEN的主要内容,如果未能解决你的问题,请参考以下文章

Nest 无法解析 JobsService (?) 的依赖关系。请确保索引 [0] 处的参数 JobModel 在 AppModule 上下文中可用

Nest 无法解析 UserService (?, +) 的依赖关系。请确保索引 [0] 处的参数在当前上下文中可用

如何修复:JSON.parse (<anonymous>) 位置 0 处的 JSON 中的意外标记 <

如何替换python列表特定索引处的值?

区分 UITableView 中索引 0 处的无选择和选择

如何删除数组中索引 X 处的项目? [复制]