Typescript 巢罐';t解析测试字符串的依赖关系
问题:Typescript 巢罐';t解析测试字符串的依赖关系,typescript,dependency-injection,nestjs,Typescript,Dependency Injection,Nestjs,问题: 在执行单元测试用例时获得以下问题 嵌套无法解析testString(?)的依赖项。请确保索引[0]处的参数SECRET\u MANAGER\u服务在SecretManagerServiceModule上下文中可用 错误日志: SecretsManagerServiceModule›#forFeature()›应具有纯字符串secret(无id) 代码: Github链接: 我试图遵循与nestjs/mongoose()相同的结构 但这对我不起作用。有人知道这个代码有什么问题吗
在执行单元测试用例时获得以下问题 嵌套无法解析testString(?)的依赖项。请确保索引[0]处的参数SECRET\u MANAGER\u服务在SecretManagerServiceModule上下文中可用
错误日志:
SecretsManagerServiceModule›#forFeature()›应具有纯字符串secret(无id)
代码:
Github链接:
我试图遵循与nestjs/mongoose()相同的结构 但这对我不起作用。有人知道这个代码有什么问题吗 如何使用:
app.module.ts:这将初始化SecretsManager
sample.module.ts:一旦机密管理器初始化,我们就可以使用forFeature函数向任何提供者注入机密
sample.service.ts
@Injectable()
class SampleService {
constructor(@Inject('testString') testStr: string) {}
}
编辑2020年6月1日 在查看了代码和我们对discord(jmcdo29)的简要讨论之后,解决方案是标记
SecretManagerServiceModule
和@Global()
,这样在运行SecretManagerServiceModule.forRoot()
之后,当您运行SecretManagerServiceModule.forFeature()时,提供程序仍然可用
您可能需要研究如何创建一个类似NestJS对Mongoose和TypeORM所做的核心模块,以使部分代码更清晰/更易于理解。很高兴您能够找到解决方案:)
从您提供的代码中可以看出,您正在尝试注入与注入令牌相关的值testString
。由于我看不到您在模块中提供了什么令牌,我只能说,您需要确保您的forRoot
或forFeature
中有一些令牌,您需要在提供者中按以下方式排列:
{
provide: 'testString',
useValue: theValueYouWantToInject
}
如果您需要更多帮助,则需要查看更多代码。具体来说,您的SecretsManagerModule
forRoot
和forFeature
方法是如何工作的,以及您作为注入令牌提供了什么Edit 01/06/2020
在查看了代码和我们对discord(jmcdo29)的简要讨论之后,解决方案是标记SecretManagerServiceModule
和@Global()
,这样在运行SecretManagerServiceModule.forRoot()
之后,当您运行SecretManagerServiceModule.forFeature()时,提供程序仍然可用
您可能需要研究如何创建一个类似NestJS对Mongoose和TypeORM所做的核心模块,以使部分代码更清晰/更易于理解。很高兴您能够找到解决方案:)
从您提供的代码中可以看出,您正在尝试注入与注入令牌相关的值testString
。由于我看不到您在模块中提供了什么令牌,我只能说,您需要确保您的forRoot
或forFeature
中有一些令牌,您需要在提供者中按以下方式排列:
{
provide: 'testString',
useValue: theValueYouWantToInject
}
如果您需要更多帮助,则需要查看更多代码。具体地说,您的SecretsManagerModule
forRoot
和forFeature
方法是如何工作的,以及您作为注入令牌提供了什么您能否展示您的forRoot
和forFeature
函数的功能?以及任何正在注入提供商以供使用的服务?我已经更新了关于如何使用该服务的描述。我已经找到了解决方案。我忘了将模块标记为全局,这就是它不工作的原因。但是现在一切正常configuration
在sample.module.t中拼写错误。您能展示forRoot
和forFeature
函数的功能吗?以及任何正在注入提供商以供使用的服务?我已经更新了关于如何使用该服务的描述。我已经找到了解决方案。我忘了将模块标记为全局,这就是它不工作的原因。但是现在,在创建提供程序{provide:'SECRET\u MANAGER\u SERVICE',useValue:new AWS.SecretsManager()}的sample.module.tsforRoot函数中,configuration
拼写错误,而forFeature函数用于创建提供程序测试字符串。但要创建这个提供者,我需要注入“SECRET\u MANAGER\u SERVICE”提供者。请检查这个。但nestjs不知何故无法注入SECRET\u MANAGER\u SERVICEforRoot函数来创建提供程序{provide:'SECRET\u MANAGER\u SERVICE',useValue:new AWS.SecretsManager()},而forFeature函数用于创建提供程序测试字符串。但要创建这个提供者,我需要注入“SECRET\u MANAGER\u SERVICE”提供者。请检查这个。但nestjs不知何故无法注入秘密管理服务
@Module({
imports: [
SecretManagerServiceModule.forFeature({
confiiguration: [{ secretName: 'testString', secretType: 'plain' }],
}),
],
providers: [SampleService],
})
class SampleModule {}
@Injectable()
class SampleService {
constructor(@Inject('testString') testStr: string) {}
}
{
provide: 'testString',
useValue: theValueYouWantToInject
}