【问题标题】:Nest can't resolve dependencies of the UserServiceNest 无法解析 UserService 的依赖关系
【发布时间】:2020-03-07 10:23:04
【问题描述】:

我遇到了这个错误

Nest can't resolve dependencies of the UserService (?, SettingsService). Please make sure that the argument UserModel at index [0] is available in the AuthModule context.

    Potential solutions:
    - If UserModel is a provider, is it part of the current AuthModule?
    - If UserModel is exported from a separate @Module, is that module imported within AuthModule?
      @Module({
        imports: [ /* the Module containing UserModel */ ]
      })

auth.module.ts

@Module({
  imports: [
    PassportModule.register({ defaultStrategy: 'jwt' }),
    JwtModule.register({
      secretOrPrivateKey: config.auth.secret,
      signOptions: {
        expiresIn: config.auth.expiresIn,
      },
    }),
    UserModule,
    SettingsModule,
  ],
  controllers: [AuthController],
  providers: [
    AuthService,
    JwtStrategy,
    LocalStrategy,
    UserService,
    SettingsService,
    Logger,
    ... other services,
  ],
  exports: [PassportModule, AuthService],
})
export class AuthModule {}

user.module.ts

@Module({
  imports: [
    MongooseModule.forFeature([{ name: 'User', schema: UserSchema }]),
    SettingsModule,
  ],
  controllers: [UserController],
  providers: [UserService],
  exports: [UserService],
})
export class UserModule {}

app.module.ts

@Module({
  imports: [
    AuthModule,
    UserModule,
    SettingsModule,
    MongooseModule.forRoot(config.db.url),
    WinstonModule.forRoot({
      level: config.logger.debug.level,
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

user.service.ts

@Injectable()
export class UserService {
  constructor(@InjectModel('User') private readonly userModel: Model<User>,
              private readonly settingsService: SettingsService) {}

  public async create(user: any): Promise<UserDto> {
    ...
  }

我尝试了一切,但找不到问题,一切似乎都是正确的,我什至检查了每个谷歌页面结果试图找到它,但我被卡住了。 该错误告诉我需要将 UserModel 导入 AuthModule,但它已经存在,我试图删除每个用户模型或 AuthModule 并将它们混合到所有内容中,但它仍然不起作用,我知道我必须将 UserService 导出到 AuthModule ,但找不到正确的方法。

【问题讨论】:

  • 你能发布你的UserService类吗?
  • @Nicolas 我用文件的一部分更新了我的问题,这些功能只是常见的粗加工操作。
  • AuthService 的构造函数是什么样的?标准 DI 语法:constructor(private readonly userService: UserService, private readonly settingsService: SettingsService){}?
  • 对了,我和你发的一样。

标签: javascript nest nestjs


【解决方案1】:

您在AuthModule 中提供UserService。但是,它应该只在您的UserModule 中。在AuthModule 中,UserModel 是未知的。

【讨论】:

  • 我评论了 UserService 和 SettingsService 并且它起作用了。
猜你喜欢
  • 2020-01-16
  • 1970-01-01
  • 2022-01-17
  • 2018-11-21
  • 2020-03-12
  • 2020-07-03
  • 2021-04-28
  • 2019-12-15
  • 2020-12-14
相关资源
最近更新 更多