Nestjs导出的服务中未定义依赖注入

问题描述 投票:0回答:1

我想在另一个模块中使用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 {}

我有相同的未定义依赖项。

nestjs
1个回答
2
投票

@Injectable()
中缺少
CurrencyService
装饰器。这个装饰器(或者实际上任何装饰器)告诉 Typescript 发出 Nest 正在读取的控制器的元数据,因此将其放置到位至关重要。

© www.soinside.com 2019 - 2024. All rights reserved.