Skip to content

Commit

Permalink
fix: hold missing dep requests while re-bundling
Browse files Browse the repository at this point in the history
  • Loading branch information
yyx990803 committed Jan 28, 2021
1 parent 6b154f0 commit 8e28803
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 16 deletions.
28 changes: 14 additions & 14 deletions packages/vite/src/node/optimizer/registerMissing.ts
Expand Up @@ -44,20 +44,6 @@ export function createMissingImpoterRegisterFn(server: ViteDevServer) {
newDeps
))
knownOptimized = newData!.optimized

// Importers' cached transform results have stale imports (resolved to
// old locations) so they need to be invalidated before the page is
// reloaded.
currentImporters.forEach((importer) => {
const mod = server.moduleGraph.getModuleById(importer)
if (mod) server.moduleGraph.invalidateModule(mod)
})
currentImporters.clear()

server.ws.send({
type: 'full-reload',
path: '*'
})
} catch (e) {
logger.error(
chalk.red(`error while updating dependencies:\n${e.stack}`),
Expand All @@ -71,6 +57,20 @@ export function createMissingImpoterRegisterFn(server: ViteDevServer) {
logger.info(chalk.greenBright(`✨ dependencies updated.`), {
timestamp: true
})

// Importers' cached transform results have stale imports (resolved to
// old locations) so they need to be invalidated before the page is
// reloaded.
currentImporters.forEach((importer) => {
const mod = server.moduleGraph.getModuleById(importer)
if (mod) server.moduleGraph.invalidateModule(mod)
})
currentImporters.clear()

server.ws.send({
type: 'full-reload',
path: '*'
})
}

return function registerMissingImport(
Expand Down
4 changes: 3 additions & 1 deletion packages/vite/src/node/plugins/resolve.ts
Expand Up @@ -45,6 +45,7 @@ function resolveExports(
// special id for paths marked with browser: false
// https://github.com/defunctzombie/package-browser-field-spec#ignore-a-module
export const browserExternalId = '__vite-browser-external'
export const pendingDepId = '__vite-pending-dep'

const isDebug = process.env.DEBUG
const debug = createDebugger('vite:resolve-details', {
Expand Down Expand Up @@ -365,12 +366,13 @@ export function tryNodeResolve(
if (versionHash) {
resolved = injectQuery(resolved, `v=${versionHash}`)
}
return { id: resolved }
} else {
// this is a missing import.
// queue optimize-deps re-run.
server._registerMissingImport?.(id, resolved, importer)
return { id: pendingDepId }
}
return { id: resolved }
}
}

Expand Down
9 changes: 8 additions & 1 deletion packages/vite/src/node/server/middlewares/transform.ts
@@ -1,6 +1,5 @@
import { ViteDevServer } from '..'
import { Connect } from 'types/connect'
import { isCSSRequest, isDirectCSSRequest } from '../../plugins/css'
import {
cleanUrl,
createDebugger,
Expand All @@ -21,6 +20,8 @@ import {
NULL_BYTE_PLACEHOLDER,
VALID_ID_PREFIX
} from '../../constants'
import { pendingDepId } from '../../plugins/resolve'
import { isCSSRequest, isDirectCSSRequest } from '../../plugins/css'

const debugCache = createDebugger('vite:cache')
const isDebug = !!process.env.DEBUG
Expand All @@ -44,6 +45,12 @@ export function transformMiddleware(
return next()
}

if (server._pendingReload && req.url!.endsWith(pendingDepId)) {
// missing dep pending reload, hold request
server._pendingReload.then(() => res.end())
return
}

let url = decodeURI(removeTimestampQuery(req.url!)).replace(
NULL_BYTE_PLACEHOLDER,
'\0'
Expand Down

0 comments on commit 8e28803

Please sign in to comment.