我在我的NestJS项目上使用nestjs-i18n
版8.0.2
来国际化字符串。
我的一个模块中有一个具有此构造函数的类:
constructor(
@InjectRepository(UsersRepository)
private readonly usersRepository: UsersRepository,
private readonly apiService: ApiService,
private readonly i18n: I18nRequestScopeService,
) {
}
这是完整的课程:
@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
是cqrs库@nestjs/cqrs
版本6.1.0
中的装饰器,如果有帮助的话。
由于某种原因,如果我尝试如图所示注入I18nRequestScopeService
,则我的3个依赖项未定义,但是如果删除usersRepository
注入,则正确定义了apiService
和I18nRequestScopeService
。
日志中未显示警告或错误。
我使用此构造函数有一个自定义ExceptionFilter
:
constructor(private readonly i18n: I18nRequestScopeService) {
}
它工作正常。
在app.module.ts
中,我有这个:
@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']),
],
})
],
...
})
我尝试过搜索该问题,但我没有运气。我想念什么?