Nest 无法解析 UserService (?, +) 的依赖关系。请确保索引 [0] 处的参数在当前上下文中可用

Posted

技术标签:

【中文标题】Nest 无法解析 UserService (?, +) 的依赖关系。请确保索引 [0] 处的参数在当前上下文中可用【英文标题】:Nest can't resolve dependencies of the UserService (?, +). Please make sure that the argument at index [0] is available in the current context 【发布时间】:2019-01-12 13:02:06 【问题描述】:

有一些问题,di/circular-references 我确定我做错了,我只是看不到它。

任何帮助将不胜感激

user.module.ts

@Module(
    imports: [
        TypeOrmModule.forFeature([User]),
        forwardRef(() => AuthModule)
    ],
    providers: [ UserService, TokenService ],
    exports: [ UserService ]
)
export class UserModule 

auth.module.ts

@Module(
    imports: [ forwardRef(() => UserModule) ],
    controllers: [ AuthController ],
    providers: [
        AuthService,
        UserService,
        TokenService
    ],
    exports: [ AuthService, TokenService ]
)
export class AuthModule 

app.module.ts

@Module(
  imports: [
    TypeOrmModule.forRoot(),
    forwardRef(() => UserModule),
    forwardRef(() => AuthModule),
  ],
)
export class AppModule 

我得到 [ExceptionHandler] 无法读取未定义的属性“模块”。

最初有“Nest 无法解析 UserService 的依赖项。然后我完全删除了 UserModule,只使用了 AuthModule,一切正常,然后决定今天重新添加 UserModule,并将代码从 AuthModule 移回UserModule,然后发现了 forwardRef(() => ),现在我得到了无法读取的属性“模型”。

提前致谢

【问题讨论】:

您能否在代码中包含imports 部分? 为什么UserService定义在AuthModule中? 我尝试了不同的事情,这就是我最终遇到不同错误的状态。 【参考方案1】:

如果您在使用TypeORM 将存储库添加到服务时遇到上述错误,请在模块文件中添加以下代码

imports: [
  TypeOrmModule.forFeature([<your-entity>])
],

【讨论】:

【参考方案2】:

当我的数组提供者中有 2 个连续逗号时出现错误

  providers: [
    AService,
    BService,, // <- NOT ALLOWED CIRCULAR PROBLEM 
  ],

【讨论】:

你可以使用 prettier、eslint/tslint 等工具来避免这种情况【参考方案3】:

您还需要通过forwardRef 注入UserService 的(循环)依赖项,请参阅CommonService example:

constructor(@Inject(forwardRef(() => TokenService)) private readonly tokenService: TokenService) 

此外,提供程序只能在一个模块中声明。如果您想在另一个模块中使用它们,请导出这些提供程序,然后只需导入模块:UserModule 导入 AuthModule 并且 not 再次提供 AuthService。这样所有导出的提供程序都可以在UserModule 中使用。

因此,从AuthModule 的提供者列表中删除UserService,并从UserModule 中删除TokenService

【讨论】:

以上是关于Nest 无法解析 UserService (?, +) 的依赖关系。请确保索引 [0] 处的参数在当前上下文中可用的主要内容,如果未能解决你的问题,请参考以下文章

Nest 无法解析 PhotoService 的依赖关系(?)

Nest.js 在单元测试中无法解析 Mongoose 模型依赖

Nest 无法解析 UserModel 的依赖项(?)

Nest 无法解析存储库的依赖关系

Nest 无法解析 UsersService (UserModel, ?) 的依赖关系

Nest 无法解析 RabbitMQService 服务的依赖关系