node.js - NestJS odefinierade beroenden
Jag använder nestjs-i18n version 8.0.2 i mitt NestJS-projekt för att internationalisera strängarna. Jag har en klass i ett av mina moduler som har denna konstruktor:
constructor(
@InjectRepository(UsersRepository)
private readonly usersRepository: UsersRepository,
private readonly apiService: ApiService,
private readonly i18n: I18nRequestScopeService,
) {
}
Detta är hela klassen:
@QueryHandler(MyQuery)
export class MyQueryHandler implements IQueryHandler<MyQuery> {
constructor(
@InjectRepository(UsersRepository)
private readonly usersRepository: UsersRepository,
private readonly apiService: ApiService,
private readonly i18n: I18nRequestScopeService,
) {
}
async execute(query: MyQuery): Promise<MyResult> {
...
}
}
QueryHandler är en dekoratör från cqrs-biblioteket @nestjs/cqrs version 6.1.0, om detta kan vara till någon hjälp.
Av någon anledning är mina 3 beroenden odefinierade om jag försöker injicera I18nRequestScopeService som visas, men usersRepository och apiService är korrekt definierade om jag tar bort I18nRequestScopeService-injektionen. Inga varningar eller fel visas i loggen.
Jag har ett anpassat ExceptionFilter med denna konstruktor:
constructor(private readonly i18n: I18nRequestScopeService) {
}
och det fungerar precis som det ska.
I app.module.ts har jag detta:
@Module({
imports: [
...
I18nModule.forRoot({
fallbackLanguage: 'en',
parser: I18nJsonParser,
parserOptions: {
path: path.join(__dirname, 'i18n/'),
},
resolvers: [
{ use: QueryResolver, options: ['lang', 'locale', 'l'] },
new HeaderResolver(['x-custom-lang']),
AcceptLanguageResolver,
new CookieResolver(['lang', 'locale', 'l']),
],
})
],
...
})
Jag försökte googla problemet, men jag hade ingen lycka. Vad missar jag?
Svar #1
Nests implementering av CQRS tillåter inte scoped providers. Det finns en öppen fråga om det här