Skip to content

Commit 43cbbcf

Browse files
authoredJun 8, 2023
fix: race condition creation module in graph in transformRequest (#13085)
1 parent d458ccd commit 43cbbcf

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed
 

‎packages/vite/src/node/server/transformRequest.ts

+18-7
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import path from 'node:path'
33
import { performance } from 'node:perf_hooks'
44
import getEtag from 'etag'
55
import convertSourceMap from 'convert-source-map'
6-
import type { SourceDescription, SourceMap } from 'rollup'
6+
import type { PartialResolvedId, SourceDescription, SourceMap } from 'rollup'
77
import colors from 'picocolors'
88
import type { ModuleNode, ViteDevServer } from '..'
99
import {
@@ -141,13 +141,22 @@ async function doTransform(
141141
return cached
142142
}
143143

144+
const resolved = module
145+
? undefined
146+
: (await pluginContainer.resolveId(url, undefined, { ssr })) ?? undefined
147+
144148
// resolve
145-
const id =
146-
module?.id ??
147-
(await pluginContainer.resolveId(url, undefined, { ssr }))?.id ??
148-
url
149+
const id = module?.id ?? resolved?.id ?? url
149150

150-
const result = loadAndTransform(id, url, server, options, timestamp)
151+
const result = loadAndTransform(
152+
id,
153+
url,
154+
server,
155+
options,
156+
timestamp,
157+
module,
158+
resolved,
159+
)
151160

152161
getDepsOptimizer(config, ssr)?.delayDepsOptimizerUntil(id, () => result)
153162

@@ -160,6 +169,8 @@ async function loadAndTransform(
160169
server: ViteDevServer,
161170
options: TransformOptions,
162171
timestamp: number,
172+
mod?: ModuleNode,
173+
resolved?: PartialResolvedId,
163174
) {
164175
const { config, pluginContainer, moduleGraph, watcher } = server
165176
const { root, logger } = config
@@ -243,7 +254,7 @@ async function loadAndTransform(
243254
throw err
244255
}
245256
// ensure module in graph after successful load
246-
const mod = await moduleGraph.ensureEntryFromUrl(url, ssr)
257+
mod ??= await moduleGraph._ensureEntryFromUrl(url, ssr, undefined, resolved)
247258
ensureWatchedFile(watcher, mod.file, root)
248259

249260
// transform

0 commit comments

Comments
 (0)
Please sign in to comment.