在nestjs中的引导函数之前运行文件

问题描述 投票:0回答:1

我创建了一个用于剪切 Proto 文件(服务器)的微服务。我有模块和服务来调用它。

现在在我的(客户端)中,我想在应用程序启动后立即调用该微服务。我已经在我的 app.module 文件中使用了 onApplicationBootstrap() 。但这不起作用,因为我在其他模块中使用 onModule init 作为 grpc 客户端配置。有什么方法可以在任何其他模块之前运行它?(需要在任何模块之前调用我的 CallProtoService 一次)

这是我的模块代码

import { Module, OnModuleInit } from "@nestjs/common";
import { GrpcProtoModule } from "../grpcProto/grpcProto.module";
import { GrpcProtoService } from "../grpcProto/grpcProto.service";

@Module({
    imports: [GrpcProtoModule],
    // providers: [CallProtoService],
    // exports: [CallProtoService],
})
   export class CallProtoModule implements OnModuleInit {
    constructor(private readonly grpcProtoService: GrpcProtoService) { }
    
    async onModuleInit() {
        const markupTrainGrpcProto = {
            packageName: 'markupTrainGrpc',
        };
        const gensecgrpcProto = {
            packageName: 'gensecgrpc',
        };

        await this.grpcProtoService.getProto(gensecgrpcProto);
        await this.grpcProtoService.getProto(markupTrainGrpcProto);
    }


}
javascript node.js nestjs
1个回答
0
投票

终于找到解决办法了。我将此代码添加到我的 main.ts 文件中。

async function bootstrap() {
//this line will CallProtoModule before AppModule created.
  await NestFactory.createApplicationContext(CallProtoModule);
  const app = await NestFactory.create(AppModule, {
    logger: WinstonModule.createLogger({
      instance: instance,
    }),
  });

希望这对其他人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.