Navigation Menu

Skip to content

Commit

Permalink
fix: do not overwrite pendingReload promise (fix #5448) (#5452)
Browse files Browse the repository at this point in the history
  • Loading branch information
Artur- committed Oct 28, 2021
1 parent c93bc3d commit cc9c2da
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions packages/vite/src/node/optimizer/registerMissing.ts
Expand Up @@ -15,7 +15,7 @@ export function createMissingImporterRegisterFn(
const { logger } = server.config
let knownOptimized = server._optimizeDepsMetadata!.optimized
let currentMissing: Record<string, string> = {}
let handle: NodeJS.Timeout
let handle: NodeJS.Timeout | undefined

let pendingResolve: (() => void) | null = null

Expand Down Expand Up @@ -70,8 +70,11 @@ export function createMissingImporterRegisterFn(
)
} finally {
server._isRunningOptimizer = false
pendingResolve && pendingResolve()
server._pendingReload = pendingResolve = null
if (!handle) {
// No other rerun() pending so resolve and let pending requests proceed
pendingResolve && pendingResolve()
server._pendingReload = pendingResolve = null
}
}

// Cached transform results have stale imports (resolved to
Expand All @@ -93,10 +96,15 @@ export function createMissingImporterRegisterFn(
if (!knownOptimized[id]) {
currentMissing[id] = resolved
if (handle) clearTimeout(handle)
handle = setTimeout(() => rerun(ssr), debounceMs)
server._pendingReload = new Promise((r) => {
pendingResolve = r
})
handle = setTimeout(() => {
handle = undefined
rerun(ssr)
}, debounceMs)
if (!server._pendingReload) {
server._pendingReload = new Promise((r) => {
pendingResolve = r
})
}
}
}
}

0 comments on commit cc9c2da

Please sign in to comment.