Skip to content

Commit 0661306

Browse files
committed
fix(plugin-vue): avoid throwing on never requested file
1 parent bad5279 commit 0661306

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

packages/plugin-vue/src/handleHotUpdate.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export async function handleHotUpdate(
1919
read: () => string | Promise<string>,
2020
server: ViteDevServer
2121
): Promise<ModuleNode[] | void> {
22-
const prevDescriptor = getDescriptor(file)
22+
const prevDescriptor = getDescriptor(file, false)
2323
if (!prevDescriptor) {
2424
// file hasn't been requested yet (e.g. async component)
2525
return

packages/plugin-vue/src/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ export default function vuePlugin(rawOptions: Options = {}): Plugin {
107107
if (query.src) {
108108
return fs.readFileSync(filename, 'utf-8')
109109
}
110-
const descriptor = getDescriptor(filename)
110+
const descriptor = getDescriptor(filename)!
111111
let block: SFCBlock | null | undefined
112112
if (query.type === 'script') {
113113
// handle <scrip> + <script setup> merge via compileScript()
@@ -139,7 +139,7 @@ export default function vuePlugin(rawOptions: Options = {}): Plugin {
139139
return transformMain(code, filename, options, this)
140140
} else {
141141
// sub block request
142-
const descriptor = getDescriptor(filename)
142+
const descriptor = getDescriptor(filename)!
143143
if (query.type === 'template') {
144144
return transformTemplateAsModule(code, descriptor, options, this)
145145
} else if (query.type === 'style') {

packages/plugin-vue/src/utils/descriptorCache.ts

+7-5
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,16 @@ export function setPrevDescriptor(filename: string, entry: SFCDescriptor) {
3434
prevCache.set(filename, entry)
3535
}
3636

37-
export function getDescriptor(filename: string) {
37+
export function getDescriptor(filename: string, errorOnMissing = true) {
3838
if (cache.has(filename)) {
3939
return cache.get(filename)!
4040
}
41-
throw new Error(
42-
`${filename} has no corresponding SFC entry in the cache. ` +
43-
`This is a @vitejs/plugin-vue internal error, please open an issue.`
44-
)
41+
if (errorOnMissing) {
42+
throw new Error(
43+
`${filename} has no corresponding SFC entry in the cache. ` +
44+
`This is a @vitejs/plugin-vue internal error, please open an issue.`
45+
)
46+
}
4547
}
4648

4749
export function setDescriptor(filename: string, entry: SFCDescriptor) {

0 commit comments

Comments
 (0)