Javascript NestJS-将工厂提供程序注入另一个提供程序';行不通
我正在尝试将nest自定义提供程序与factory一起使用,出于某种原因,我正在努力使其正常工作。 我创建了以下示例-Javascript NestJS-将工厂提供程序注入另一个提供程序';行不通,javascript,node.js,nestjs,Javascript,Node.js,Nestjs,我正在尝试将nest自定义提供程序与factory一起使用,出于某种原因,我正在努力使其正常工作。 我创建了以下示例- interface ProviderOptions: {x:string, y:number}; interface AsyncProps {useFactory:(...args:any[])=> ProviderOptions, inject:any[], imports:any[] } @Module({}) export class MyModule {
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-
错误:嵌套无法解析MyService(?)的依赖项。请
确保索引[0]处的参数依赖项在中可用
MyModule上下文
我错过了什么
谢谢
更新-
所以现在真的很奇怪-
最初,MyService位于另一个文件中,紧挨着MyModule。当将MyService移动到与MyModule相同的文件中时,上述代码确实可以正常工作。怎么可能呢?基于您的错误,您有一个循环文件导入,这意味着TypeScript无法解析类名,而Nest也无法创建该类。I您如何在消费模块中使用
MyService
?@JayMcDoniel我正在通过构造函数注入它。然而,即使不使用它,Nest也无法加载,因为他无法解析MyService依赖项。但是,这种使用代码是什么样子的呢?完全错误是什么?这里没有足够的信息来知道发生了什么wrong@JayMcDoniel在线更新。现在,当将类移动到与模块相同的文件时,此代码也可以工作。你有什么解释吗?谢谢!看起来确实如此。“MY_PROVIDER”是模块文件中的常量,因此服务文件引用了该文件。将令牌移动到const文件解决了该问题。