模块上下文中提供了如何修复索引 [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,
)
这是我的 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
发帖
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] 处的参数在当前上下文中可用