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 {}
Run Code Online (Sandbox Code Playgroud)
users.module.ts:
@Module({
imports: [
DatabaseModule,
ErrorService,
],
providers: [
UsersService,
...usersProviders,
UserResolver,
],
})
export class UsersModule {
constructor(private readonly errorService: ErrorService) {}
}
Run Code Online (Sandbox Code Playgroud)
问题是此ErrorService,但是例如数据库模块以类似的方式使用,并且可以正常工作而没有任何错误。我有点困惑)也许有人会帮忙。谢谢。
ErrorService未正确注入UsersModule。
应该是:
providers中UsersModuleexports一个模块import通过编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) {}
}
Run Code Online (Sandbox Code Playgroud)
LoggerService更好吗?如果我的猜测是正确的话),@Global请import在主模块(AppModule)中使用一次只能使用一次的模块例:
@Global()
@Module({
providers: [LoggerService],
exports: [LoggerService],
})
export class LoggerModule {
constructor(private readonly loggerService: LoggerService) { /* initialize logger, or whatever */ }
}
Run Code Online (Sandbox Code Playgroud)
然后,你必须添加LoggerModule到imports的AppModule,并且LoggerService将无需注射的任何地方重新申报。
| 归档时间: |
|
| 查看次数: |
1529 次 |
| 最近记录: |