NodeJS 我在nest.js中遇到以下错误“Nest无法解析WorkspaceController的依赖关系...”

t3psigkw  于 2023-06-22  发布在  Node.js
关注(0)|答案(2)|浏览(139)

我得到这个错误
Nest无法解析WorkspaceController(?))。请确保索引[0]处的参数API_SERVICE在WorkspaceModule上下文中可用。
我有这个密码

app.module.ts

@Module({
  imports: [
    ClientsModule.register([
      {
        name: 'API_SERVICE',
        transport: Transport.REDIS,
        options: {
          url: 'redis://localhost:6379'
        }
      }
    ]),
    WorkspaceModule
  ],
  controllers: [AppController],
  providers: [AppService]
})

workspace.module.ts

@Module({
  imports: [],
  controllers: [WorkspaceController]
})

export class WorkspaceModule {}

workspace.controller.ts

@Controller()
export class WorkspaceController{
  constructor(@Inject('API_SERVICE') private client: ClientProxy) {}

  @Get("default-languages")
  getDefaultLanguages():Observable<string[]> {
    return this.client.send<any>({cmd:'getDefaultLanguages'},{});
  }
}
1tu0hz3e

1tu0hz3e1#

您在AppModule内部注册ClientsModule,这意味着AppModule范围内的控制者和提供者(即在其自己providerscontrollers阵列中)可以访问提供程序(@Inject('API_SERVICE')),但是一旦您转到另一个模块的作用域(如WorkspaceModule),该提供程序就不再可用。如果您需要多个不同模块中的微服务客户端,我建议为它创建一个 Package 模块,用于导入和导出ClientsModule,否则,您只需要将ClientsMOdule.registerAppModule移动到WorkspaceModule

Package 器示例

@Module({
  imports: [ClientsModule.register(clientsModuleOptions)],
  exports: [ClientsModule],
})
export class WrapperClientsModule {}

这叫做模块再输出

az31mfrm

az31mfrm2#

将导入的ClientsModule设为全局。然后,您可以在子模块中使用它及其提供程序。

app.module.ts

@Module({
   imports: [
     ClientsModule.register({
       clients: [
         {
           name: 'API_SERVICE',
           transport: Transport.REDIS,
           options: {
             url: 'redis://localhost:6379',
           },
         },
       ],
       isGlobal: true,
     }),
     WorkspaceModule
   ],
   controllers: [AppController],
   providers: [AppService]
 })

checkclients-module.interface.d.ts

export type ClientsModuleOptions = Array<ClientProviderOptions> | {
        clients: Array<ClientProviderOptions>;
        isGlobal?: boolean;
    };

相关问题