我想在另一个模块中使用CurrencyService。这就是我所做的:
import { HttpModule } from '@nestjs/axios';
import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
import { TypeOrmModule } from '@nestjs/typeorm';
import { CurrencyRepository } from './currency.repository';
import { CurrencyService } from './currency.service';
@Module({
imports: [
HttpModule,
ScheduleModule.forRoot(),
TypeOrmModule.forFeature([CurrencyRepository]),
],
exports: [CurrencyService],
providers: [CurrencyService],
})
export class CurrencyModule {}
在我的CurrencyService 中,我注入了一个存储库和另一个服务:
export class CurrencyService {
constructor(
private currencyRepository: CurrencyRepository,
private httpService: HttpService,
) {}
async getCurrency(base: string, target: string): Promise<Currency> {
console.log(this.currencyRepository);
.....
我的问题是,当我导入CurrencyModule并将CurrencyService注入另一个模块的服务时,currencyRepository和httpService都是未定义的。
启动时没有错误,只是依赖项未定义,导致运行时出错。
我也尝试过这样的事情:
import { HttpModule } from '@nestjs/axios';
import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
import { TypeOrmModule } from '@nestjs/typeorm';
import { CurrencyRepository } from './currency.repository';
import { CurrencyService } from './currency.service';
@Module({
imports: [
HttpModule,
ScheduleModule.forRoot(),
TypeOrmModule.forFeature([CurrencyRepository]),
],
exports: [
CurrencyService,
TypeOrmModule.forFeature([CurrencyRepository]),
HttpModule,
],
providers: [CurrencyService],
})
export class CurrencyModule {}
我有相同的未定义依赖项。
@Injectable()
中缺少 CurrencyService
装饰器。这个装饰器(或者实际上任何装饰器)告诉 Typescript 发出 Nest 正在读取的控制器的元数据,因此将其放置到位至关重要。