Nest JS - Невозможно ввести сервис для middlewere
Я создал 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 ответ
Решение
Ваше приложение не может решить AuthMiddleware
зависимости, вероятно, потому что вы вводите UserService
в это, кроме ServerModule
что вы импортируете в свой AuthenticationModule
просто экспортирует ServerService
, Итак, что должно быть сделано:
@Middleware()
export class AuthenticationMiddleware implements NestMiddleware {
constructor(private service : ServerService) {}
resolve(): (req, res, next) => void {
return (req, res, next) => {
if (req.connection.user)
next();
this.service.getUsersPermissions()
}
}
Вы можете узнать больше о контейнере зависимостей NestJS здесь.