我得到这个错误
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'},{});
}
}
2条答案
按热度按时间1tu0hz3e1#
您在
AppModule
内部注册ClientsModule
,这意味着AppModule
范围内的控制者和提供者(即在其自己providers
和controllers
阵列中)可以访问提供程序(@Inject('API_SERVICE')
),但是一旦您转到另一个模块的作用域(如WorkspaceModule
),该提供程序就不再可用。如果您需要多个不同模块中的微服务客户端,我建议为它创建一个 Package 模块,用于导入和导出ClientsModule
,否则,您只需要将ClientsMOdule.register
从AppModule
移动到WorkspaceModule
Package 器示例
这叫做模块再输出
az31mfrm2#
将导入的ClientsModule设为全局。然后,您可以在子模块中使用它及其提供程序。
app.module.ts
checkclients-module.interface.d.ts