javascript - NestJS - 将工厂提供者注入另一个提供者不起作用
问题描述
我正在尝试将嵌套自定义提供程序与工厂一起使用,出于某种原因,我正在努力使其正常工作。我创建了以下示例 -
interface ProviderOptions: {x:string, y:number};
interface AsyncProps {useFactory:(...args:any[])=> ProviderOptions, inject:any[], imports:any[] }
@Module({})
export class MyModule {
static forRootAsync(asyncProps: AsyncProps): DynamicModule {
const myFactory: Provider = {
provide: "MY_PROVIDER",
useFactory: asyncProps.useFactory,
inject: asyncProps.inject,
};
return {
module: MyModule,
providers: [myFactory, MyService],
exports: [MyService],
imports: [...asyncProps.imports],
};
}
}
@Injectable()
export class MyService {
constructor(@Inject("MY_PROVIDER") this options:ProviderOptions){
}
}
由于某种原因,我无法解决 MyService -
错误:Nest 无法解析 MyService (?) 的依赖关系。请确保索引 [0] 处的参数依赖项在 MyModule 上下文中可用。
我在这里缺少什么?
谢谢!
更新 - 所以现在真的很奇怪 - 最初 MyService 位于 MyModule 旁边的另一个文件中。当将 MyService 移动到与 MyModule 相同的文件时,上面的代码确实可以按预期工作。怎么可能?
解决方案
根据您的错误,您有一个循环文件导入,这意味着 typecript 无法解析类名,进而 Nest 无法创建该类。我刚刚在这里回答了另一个问题
推荐阅读
- mysql - 从模式创建表复合键
- java - Arquillian & Testcontainers:无效的 Oracle URL
- ios - 在 UIAlertController 中使用时无法设置 NSAttributedString 的前景色
- jspdf - 如何使用 AutoTable 创建不规则表格
- python - 获取命令行参数
- anaconda - 无法从 Anaconda Win10 打开 Spyder
- node.js - .npmrc 文件有什么用
- elasticsearch - 数学函数不适用于 ElasticSearch 脚本中的运算符
- ios13 - iOS 13:如何防止应用程序在后台被杀死?
- python - 如何在 Flask 应用程序中使用 Postgre 的 HSTORE 类型?