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(() => ),现在我得到了无法读取的属性“模型”。
提前致谢
【问题讨论】:
您能否在代码中包含import
s 部分?
为什么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 模型依赖