Nest JS - 无法向中间注入服务

时间:2018-02-06 08:21:43

标签: node.js nestjs

我创建了一个auth middlewere来检查每个请求,中间是使用服务器(仅当在req.connection中找不到数据时)。 我试图将服务注入到我的中间位置并且我一直得到同样的错误" Nest无法解决AuthenticationMiddleware(?)的依赖关系。请验证当前上下文中是否有[0]参数。"

AuthenticationModule:

@Module({
   imports: [ServerModule],
   controllers: [AuthenticationMiddleware],
})
export class AuthenticationModule {
}

AuthenticationMiddleware:

@Middleware()
export class AuthenticationMiddleware implements NestMiddleware {

constructor(private service : UserService) {}

resolve(): (req, res, next) => void {
 return (req, res, next) => {
   if (req.connection.user)
    next();

  this.service.getUsersPermissions()     
  }
}

ServerModule:

@Module({
 components: [ServerService],
 controllers: [ServerController],
 exports: [ServerService]
})    
 export class ServerModule {}

ApplicationModule:

@Module({
  imports: [
    CompanyModule,
    ServerModule,
    AuthenticationModule
  ]
})

export class ApplicationModule implements NestModule{
  configure(consumer: MiddlewaresConsumer): void {
  consumer.apply(AuthenticationMiddleware).forRoutes(
      { path: '/**', method: RequestMethod.ALL }
   );
 }
}

1 个答案:

答案 0 :(得分:5)

您的应用可能无法解决AuthMiddleware个依赖关系,因为您向其中注入了UserService,但导入ServerModule的{​​{1}}只会导出AuthenticationModule {1}}。那么,应该做的是:

ServerService

您可以找到有关NestJS依赖性容器here的更多信息。