File tree 2 files changed +37
-19
lines changed
2 files changed +37
-19
lines changed Original file line number Diff line number Diff line change @@ -148,14 +148,23 @@ export async function preview(
148
148
149
149
const closeHttpServer = createServerCloseFn ( httpServer )
150
150
151
+ // Promise used by `server.close()` to ensure `closeServer()` is only called once
152
+ let closeServerPromise : Promise < void > | undefined
153
+ const closeServer = async ( ) => {
154
+ teardownSIGTERMListener ( closeServerAndExit )
155
+ await closeHttpServer ( )
156
+ server . resolvedUrls = null
157
+ }
158
+
151
159
const server : PreviewServer = {
152
160
config,
153
161
middlewares : app ,
154
162
httpServer,
155
163
async close ( ) {
156
- teardownSIGTERMListener ( closeServerAndExit )
157
- await closeHttpServer ( )
158
- server . resolvedUrls = null
164
+ if ( ! closeServerPromise ) {
165
+ closeServerPromise = closeServer ( )
166
+ }
167
+ return closeServerPromise
159
168
} ,
160
169
resolvedUrls : null ,
161
170
printUrls ( ) {
Original file line number Diff line number Diff line change @@ -523,6 +523,28 @@ export async function _createServer(
523
523
524
524
const devHtmlTransformFn = createDevHtmlTransformFn ( config )
525
525
526
+ // Promise used by `server.close()` to ensure `closeServer()` is only called once
527
+ let closeServerPromise : Promise < void > | undefined
528
+ const closeServer = async ( ) => {
529
+ if ( ! middlewareMode ) {
530
+ teardownSIGTERMListener ( closeServerAndExit )
531
+ }
532
+
533
+ await Promise . allSettled ( [
534
+ watcher . close ( ) ,
535
+ ws . close ( ) ,
536
+ Promise . allSettled (
537
+ Object . values ( server . environments ) . map ( ( environment ) =>
538
+ environment . close ( ) ,
539
+ ) ,
540
+ ) ,
541
+ closeHttpServer ( ) ,
542
+ server . _ssrCompatModuleRunner ?. close ( ) ,
543
+ ] )
544
+ server . resolvedUrls = null
545
+ server . _ssrCompatModuleRunner = undefined
546
+ }
547
+
526
548
let server : ViteDevServer = {
527
549
config,
528
550
middlewares,
@@ -674,23 +696,10 @@ export async function _createServer(
674
696
}
675
697
} ,
676
698
async close ( ) {
677
- if ( ! middlewareMode ) {
678
- teardownSIGTERMListener ( closeServerAndExit )
699
+ if ( ! closeServerPromise ) {
700
+ closeServerPromise = closeServer ( )
679
701
}
680
-
681
- await Promise . allSettled ( [
682
- watcher . close ( ) ,
683
- ws . close ( ) ,
684
- Promise . allSettled (
685
- Object . values ( server . environments ) . map ( ( environment ) =>
686
- environment . close ( ) ,
687
- ) ,
688
- ) ,
689
- closeHttpServer ( ) ,
690
- server . _ssrCompatModuleRunner ?. close ( ) ,
691
- ] )
692
- server . resolvedUrls = null
693
- server . _ssrCompatModuleRunner = undefined
702
+ return closeServerPromise
694
703
} ,
695
704
printUrls ( ) {
696
705
if ( server . resolvedUrls ) {
You can’t perform that action at this time.
0 commit comments