有一些问题,di / circular引用我确定我做错了,我只是看不到。
任何帮助将不胜感激
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]无法读取未定义的属性'module'。
最初具有“嵌套无法解析UserService的依赖关系。然后我完全删除了UserModule并仅使用AuthModule,一切正常,然后决定今天再添加UserModule并将代码从AuthModule移回到UserModule,然后发现了forwardRef(()=>),现在我得到了无法读取的属性“模型”。
预先感谢
答案 0 :(得分:0)
您还需要通过UserService
注入forwardRef
的(循环)依赖项,请参见CommonService example:
constructor(@Inject(forwardRef(() => TokenService)) private readonly tokenService: TokenService) {}
此外,只能在一个模块中声明提供程序。如果要在其他模块中使用它们,请导出这些提供程序,然后仅导入模块:UserModule
导入AuthModule
并不再次提供AuthService
。这样,所有导出的提供程序都可以在UserModule
中使用。
因此,从UserService
的提供者列表中删除AuthModule
,并从TokenService
的{{1}}中删除。
答案 1 :(得分:0)
如果使用TypeORM
将存储库添加到服务中,然后在模块文件中添加以下代码,则会遇到上述错误
imports: [
TypeOrmModule.forFeature([<your-entiry>])
],
答案 2 :(得分:0)
当我的数组提供程序中有两个连续的逗号时,我出错了
providers: [
AService,
BService,, // <- NOT ALLOWED CIRCULAR PROBLEM
],