typescript 是否可以将main.ts中创建的NestJS应用注入到模块服务中?

a1o7rhls  于 2022-12-30  发布在  TypeScript
关注(0)|答案(2)|浏览(144)

假设您有基本的NestJS设置:

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  app.enableCors(corsOptions);

  app.useGlobalPipes(
    new ValidationPipe({
      validateCustomDecorators: true,
      transform: true,
      whitelist: true,
      exceptionFactory: exceptionFactory,
    }),
  );
  app.useGlobalFilters(new CustomExceptionsFilter());

  const port = parseInt(process.env.PORT);
  await app.listen(port);
}

是否可以从不同模块中的服务访问用NestFactory创建的app变量?

@Injectable()
export class TestService {
  constructor(
    ...
  ) {}

  async useApp(): Promise<any> {
    const app = ... // use Injected app instance created from AppModule
  }

我尝试过导入AppModule并再次创建NestFactory,但它只是解决了冗余问题。

dgsult0t

dgsult0t1#

NestFactory.create将创建app,这取决于模块及其提供程序。在创建app之前使用它没有意义。
相反,你可以告诉我们你想用appTestService做什么。

weylhg0b

weylhg0b2#

没有办法从Nest容器中获取app示例本身,您可以在NestFactory.create()创建应用程序后将其导出。
但是,如果您正在寻找AppModule的示例,下面的代码片段可能会对您有所帮助。

const app = await NestFactory.createApplicationContext(AppModule);

相关问题