NestJS - 将工厂提供程序注入另一个提供程序不起作用

时间:2021-04-22 22:04:05

标签: javascript node.js nestjs

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


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 相同的文件时,上面的代码确实按预期工作。怎么可能?

1 个答案:

答案 0 :(得分:1)

根据您的错误,您有一个循环文件​​导入,这意味着 typecript 无法解析类名,反过来 Nest 也无法创建类。我just answered another question on it here

相关问题