Javascript NestJS-将工厂提供程序注入另一个提供程序';行不通

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 {

我正在尝试将nest自定义提供程序与factory一起使用,出于某种原因,我正在努力使其正常工作。 我创建了以下示例-


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文件解决了该问题。