NestJS无法解析UsersModule的依赖关系。错误:
Error: Nest can't resolve dependencies of the UsersModule (?). Please verify whether [0] argument is available in the current context.
app.module.ts:
@Module({
imports: [
ConfigModule,
DatabaseModule,
GraphQLModule,
UsersModule,
],
providers: [
ErrorService,
],
exports: [
DatabaseModule,
ErrorService,
],
})
export class AppModule implements NestModule {}
users.module.ts:
@Module({
imports: [
DatabaseModule,
ErrorService,
],
providers: [
UsersService,
...usersProviders,
UserResolver,
],
})
export class UsersModule {
constructor(private readonly errorService: ErrorService) {}
}
问题是这个ErrorService,但是例如数据库模块以类似的方式使用,并且它没有任何错误。我有点困惑)也许有人会帮忙。谢谢。
ErrorService
未正确注入UsersModule
。
它应该是:
providers
的UsersModule
exports
的一个模块import
ed的UsersModule
否则,Nest将无法解决它。将它添加到exports
的AppModule
并不能使它在全球范围内可用。
我可以看到三种解决方案:
ErrorService
添加到providers
的UsersModule
。但它看起来并不合适,因为我认为/猜测你会在代码的许多其他部分重用这个服务(对吧?)。因此,更好:ErrorsModule
exports
ErrorService
,然后UsersModule
将import
ErrorsModule
,并将能够注入服务。喜欢:
// errors.module.ts
@Module({
providers: [ ErrorService ],
exports: [ ErrorService ],
})
export class ErrorsModule {}
// users.module.ts
@Module({
imports: [ErrorsModule],
})
export class UsersModule {
constructor(private readonly errorService: ErrorService) {}
}
LoggerService
会更好吗?如果我的猜测是正确的话),使用@Global
模块,你只需要在主模块中使用import
(AppModule
)例:
@Global()
@Module({
providers: [LoggerService],
exports: [LoggerService],
})
export class LoggerModule {
constructor(private readonly loggerService: LoggerService) { /* initialize logger, or whatever */ }
}
然后你必须将LoggerModule
添加到imports
的AppModule
,而LoggerService
将可以在任何地方注射而无需重新声明它。