Skip to content

Commit 01857af

Browse files
authoredAug 20, 2022
fix: module graph ensureEntryFromUrl based on id (#9759)
1 parent 3a586e4 commit 01857af

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed
 
+18-6
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
1-
import { beforeEach, describe, expect, it } from 'vitest'
1+
import { describe, expect, it } from 'vitest'
22
import { ModuleGraph } from '../moduleGraph'
3-
let moduleGraph: ModuleGraph
43

54
describe('moduleGraph', () => {
65
describe('invalidateModule', () => {
7-
beforeEach(() => {
8-
moduleGraph = new ModuleGraph((id) => Promise.resolve({ id }))
9-
})
10-
116
it('removes an ssrError', async () => {
7+
const moduleGraph = new ModuleGraph(async (url) => ({ id: url }))
128
const entryUrl = '/x.js'
139

1410
const entryModule = await moduleGraph.ensureEntryFromUrl(entryUrl, false)
@@ -18,5 +14,21 @@ describe('moduleGraph', () => {
1814
moduleGraph.invalidateModule(entryModule)
1915
expect(entryModule.ssrError).toBe(null)
2016
})
17+
18+
it('ensureEntryFromUrl should based on resolvedId', async () => {
19+
const moduleGraph = new ModuleGraph(async (url) => {
20+
if (url === '/xx.js') {
21+
return { id: '/x.js' }
22+
} else {
23+
return { id: url }
24+
}
25+
})
26+
const meta = { vite: 'test' }
27+
28+
const mod1 = await moduleGraph.ensureEntryFromUrl('/x.js', false)
29+
mod1.meta = meta
30+
const mod2 = await moduleGraph.ensureEntryFromUrl('/xx.js', false)
31+
expect(mod2.meta).to.equal(meta)
32+
})
2133
})
2234
})

Diff for: ‎packages/vite/src/node/server/moduleGraph.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ export class ModuleGraph {
185185
setIsSelfAccepting = true
186186
): Promise<ModuleNode> {
187187
const [url, resolvedId, meta] = await this.resolveUrl(rawUrl, ssr)
188-
let mod = this.urlToModuleMap.get(url)
188+
let mod = this.idToModuleMap.get(resolvedId)
189189
if (!mod) {
190190
mod = new ModuleNode(url, setIsSelfAccepting)
191191
if (meta) mod.meta = meta
@@ -200,6 +200,11 @@ export class ModuleGraph {
200200
}
201201
fileMappedModules.add(mod)
202202
}
203+
// multiple urls can map to the same module and id, make sure we register
204+
// the url to the existing module in that case
205+
else if (!this.urlToModuleMap.has(url)) {
206+
this.urlToModuleMap.set(url, mod)
207+
}
203208
return mod
204209
}
205210

0 commit comments

Comments
 (0)
Please sign in to comment.