必须声明依赖项的 NestJS 依赖项

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

我遇到了 NestJS 的依赖关系未自动解决的问题:

  1. 我有一个 AWSModule,它是一个非常简单的 Amazon AWS 链接,除了 ConfigService 之外没有任何依赖项:
@Module({
    imports: [ConfigModule],
  controllers: [],
  providers: [ConfigService, AwsService],
    exports: [AwsService],
})
export class AwsModule {}
  1. 我在我的 AuthModule 中使用上述内容:
@Module({
    imports: [
        AwsModule,
    ],
  controllers: [AuthController],
  providers: [AuthService, AwsService],
  exports: [AuthService]
})
export class AuthModule {}

到目前为止一切顺利,上述工作完全正常。

现在当我想在其他地方使用 AuthService 时,麻烦就来了:

  1. 我有一个 UserModule 需要导入 AuthModule:
@Module({
    imports: [
        ...
        AuthModule,
    ],
    controllers: [UserController],
    providers: [UserService, AuthService, /*** BREAKS WITHOUT THIS: ***/ AwsService],
    exports: [SequelizeModule],
})
export class UserModule {}

如果我不在这里包含仅由 AuthModule 使用的 AwsService,它就会崩溃。

为什么我的 UserModule 需要了解 AuthModule 的内部依赖项? 如果我在程序中的其他地方使用 AuthModule,我不想在使用 AuthModule 的任何地方重复导入 AuthModule 的所有依赖项。 Nest 应该弄清楚如何解决这些依赖关系?

在我的根 ApplicationModule 中,我正在导入声明的所有模块:

@Module({
    imports: [

        //.env File Configuration Support:
        ConfigModule.forRoot({
            isGlobal: true,
        }),

        ...

        //App Modules:
        AwsModule,
        AuthModule,
        UserModule,

    ],
    providers: [AppService],
    controllers: [AppController],
})
export class AppModule {}

typescript dependency-injection nestjs
1个回答
0
投票

您多次注册

AwsService
提供商。对于
UserModule
不需要这样做,因为它正在导入
AwsModule
——它的
AwsService
数组中有
exports
。这是 Nestjs 模块上非常基本的东西。

所以从

AwsService
中删除
UserModule
,我想你应该没问题。

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