gpt4 book ai didi

node.js - NestJS 未定义的依赖项

转载 作者:行者123 更新时间:2023-12-04 17:28:23 30 4
gpt4 key购买 nike

我在我的 NestJS 项目上使用 nestjs-i18n 版本 8.0.2 来国际化字符串。我的一个模块中有一个具有此构造函数的类:

    constructor(
@InjectRepository(UsersRepository)
private readonly usersRepository: UsersRepository,
private readonly apiService: ApiService,
private readonly i18n: I18nRequestScopeService,
) {
}

这是完整的类(class):

@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 version 6.1.0 的装饰器,如果这有任何帮助的话。

出于某种原因,如果我尝试注入(inject) I18nRequestScopeService,我的 3 个依赖项是未定义的,但是如果正确定义了 usersRepositoryapiService我删除了 I18nRequestScopeService 注入(inject)。日志中不会显示任何警告或错误。

我有一个带有此构造函数的自定义 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']),
],
})
],
...
})

我试着用谷歌搜索这个问题,但我没有运气。我错过了什么?

最佳答案

Nest 的 CQRS 实现不允许范围内的提供程序。 There is an open issue about it here

关于node.js - NestJS 未定义的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61906755/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com