File tree 2 files changed +17
-5
lines changed
2 files changed +17
-5
lines changed Original file line number Diff line number Diff line change @@ -144,7 +144,7 @@ export async function handleHotUpdate({
144
144
return [ ...affectedModules ] . filter ( Boolean ) as ModuleNode [ ]
145
145
}
146
146
147
- function isEqualBlock ( a : SFCBlock | null , b : SFCBlock | null ) {
147
+ export function isEqualBlock ( a : SFCBlock | null , b : SFCBlock | null ) {
148
148
if ( ! a && ! b ) return true
149
149
if ( ! a || ! b ) return false
150
150
// src imports will trigger their own updates
Original file line number Diff line number Diff line change @@ -10,7 +10,7 @@ import {
10
10
import { PluginContext , TransformPluginContext } from 'rollup'
11
11
import { resolveScript } from './script'
12
12
import { transformTemplateInMain } from './template'
13
- import { isOnlyTemplateChanged } from './handleHotUpdate'
13
+ import { isOnlyTemplateChanged , isEqualBlock } from './handleHotUpdate'
14
14
import { RawSourceMap , SourceMapConsumer , SourceMapGenerator } from 'source-map'
15
15
import { createRollupError } from './utils/error'
16
16
@@ -71,11 +71,23 @@ export async function transformMain(
71
71
) )
72
72
}
73
73
74
- const renderReplace = hasTemplateImport
75
- ? ssr
74
+ let renderReplace = ''
75
+ if ( hasTemplateImport ) {
76
+ renderReplace = ssr
76
77
? `_sfc_main.ssrRender = _sfc_ssrRender`
77
78
: `_sfc_main.render = _sfc_render`
78
- : ''
79
+ } else {
80
+ // #2128
81
+ // User may empty the template but we didn't provide rerender function before
82
+ if (
83
+ prevDescriptor &&
84
+ ! isEqualBlock ( descriptor . template , prevDescriptor . template )
85
+ ) {
86
+ renderReplace = ssr
87
+ ? `_sfc_main.ssrRender = () => {}`
88
+ : `_sfc_main.render = () => {}`
89
+ }
90
+ }
79
91
80
92
// styles
81
93
const stylesCode = await genStyleCode ( descriptor , pluginContext )
You can’t perform that action at this time.
0 commit comments