diff --git a/packages/vite-plugin-node/src/server/nest.ts b/packages/vite-plugin-node/src/server/nest.ts index 321c1b5..0fa57d0 100644 --- a/packages/vite-plugin-node/src/server/nest.ts +++ b/packages/vite-plugin-node/src/server/nest.ts @@ -2,15 +2,25 @@ import type { INestApplication } from '@nestjs/common'; import type { RequestAdapter } from '..'; let prevApp: INestApplication; +let initializing = false; export const NestHandler: RequestAdapter = async ({ app, req, res }) => { // @ts-expect-error nest app typing error if (!app.isInitialized) { - if (prevApp) - await prevApp.close(); + while (initializing) { + await new Promise((resolve) => setTimeout(resolve, 100)); + } + initializing = true; - await app.init(); - prevApp = app; + try { + if (prevApp) + await prevApp.close(); + + await app.init(); + prevApp = app; + } finally { + initializing = false; + } } const instance = app.getHttpAdapter().getInstance();