在模块中使用导出的组件

Using component from exports in a module

我有 UserService,这是 UserModule 需要的,然后添加到 exports

import {Module} from '@nestjs/common'
import {TypeOrmModule} from '@nestjs/typeorm'
import {User} from './user.entity'
import {UserService} from './user.service'

@Module({
  imports: [TypeOrmModule.forFeature([User])],
  components: [UserService],
  controllers: [],
  exports: [UserService]
})
export class UserModule{}

然后我有一个 AuthModule 需要使用 UserService 来执行此操作:

import * as passport from 'passport'
import * as PassportAzureAD from 'passport-azure-ad'
import * as session from 'express-session'
import {
  Module,
  NestModule,
  MiddlewaresConsumer,
  RequestMethod,
} from '@nestjs/common'
import {Logger} from '@nestjs/common'
import {UserModule} from '../user/user.module'

@Module({
  imports: [UserModule],
  components: [],
  controllers: []
})
export class AuthModule implements NestModule{
  public configure(consumer: MiddlewaresConsumer){
      // SNIP
      // How to use `UserService` here
  }
}

如何使用这里的UserServicedocs 说:

Now each module which would import the CatsModule (we need to put CatsModule into the imports array) has access to the CatsService and will share the same instance with all of the modules which are importing this module too.

但是没有给出你会如何做的例子。

导出的 UserService 需要在其构造函数中导入到 AuthModule 中,如下所示:

@Module({
  imports: [UserModule],
  components: [],
  controllers: []
})
export class AuthModule implements NestModule{
  constructor(
    private readonly userService: UserService
  ) {}

  public configure(consumer: MiddlewaresConsumer){
    this.userService
  }
}

更多关于依赖注入的信息: