Skip to content

Commit 8f6b669

Browse files
committed
fix(compiler-ssr): import helpers from correct packages
1 parent c441e88 commit 8f6b669

File tree

4 files changed

+22
-12
lines changed

4 files changed

+22
-12
lines changed

packages/compiler-ssr/__tests__/ssrElement.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ describe('ssr: element', () => {
5151
test('<textarea> with dynamic v-bind', () => {
5252
expect(compile(`<textarea v-bind="obj">fallback</textarea>`).code)
5353
.toMatchInlineSnapshot(`
54-
"const { _renderAttrs, _interpolate } = require(\\"vue\\")
54+
"const { _renderAttrs, _interpolate } = require(\\"@vue/server-renderer\\")
5555
5656
return function ssrRender(_ctx, _push, _parent) {
5757
let _temp0

packages/compiler-ssr/__tests__/ssrVShow.spec.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { compile } from '../src'
33
describe('ssr: v-show', () => {
44
test('basic', () => {
55
expect(compile(`<div v-show="foo"/>`).code).toMatchInlineSnapshot(`
6-
"const { _renderStyle } = require(\\"vue\\")
6+
"const { _renderStyle } = require(\\"@vue/server-renderer\\")
77
88
return function ssrRender(_ctx, _push, _parent) {
99
_push(\`<div\${_renderStyle((_ctx.foo) ? null : { display: \\"none\\" })}></div>\`)
@@ -14,7 +14,7 @@ describe('ssr: v-show', () => {
1414
test('with static style', () => {
1515
expect(compile(`<div style="color:red" v-show="foo"/>`).code)
1616
.toMatchInlineSnapshot(`
17-
"const { _renderStyle } = require(\\"vue\\")
17+
"const { _renderStyle } = require(\\"@vue/server-renderer\\")
1818
1919
const _hoisted_1 = {\\"color\\":\\"red\\"}
2020
@@ -30,7 +30,7 @@ describe('ssr: v-show', () => {
3030
test('with dynamic style', () => {
3131
expect(compile(`<div :style="{ color: 'red' }" v-show="foo"/>`).code)
3232
.toMatchInlineSnapshot(`
33-
"const { _renderStyle } = require(\\"vue\\")
33+
"const { _renderStyle } = require(\\"@vue/server-renderer\\")
3434
3535
return function ssrRender(_ctx, _push, _parent) {
3636
_push(\`<div\${_renderStyle([
@@ -46,7 +46,7 @@ describe('ssr: v-show', () => {
4646
compile(`<div style="color:red" :style="{ fontSize: 14 }" v-show="foo"/>`)
4747
.code
4848
).toMatchInlineSnapshot(`
49-
"const { _renderStyle } = require(\\"vue\\")
49+
"const { _renderStyle } = require(\\"@vue/server-renderer\\")
5050
5151
const _hoisted_1 = {\\"color\\":\\"red\\"}
5252
@@ -66,7 +66,8 @@ describe('ssr: v-show', () => {
6666
`<div v-bind="baz" style="color:red" :style="{ fontSize: 14 }" v-show="foo"/>`
6767
).code
6868
).toMatchInlineSnapshot(`
69-
"const { mergeProps, _renderAttrs } = require(\\"vue\\")
69+
"const { mergeProps } = require(\\"vue\\")
70+
const { _renderAttrs } = require(\\"@vue/server-renderer\\")
7071
7172
const _hoisted_1 = {\\"color\\":\\"red\\"}
7273

packages/compiler-ssr/src/runtimeHelpers.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@ export const SSR_RENDER_ATTR = Symbol(`renderAttr`)
1010
export const SSR_RENDER_DYNAMIC_ATTR = Symbol(`renderDynamicAttr`)
1111
export const SSR_RENDER_LIST = Symbol(`renderList`)
1212

13-
// Note: these are helpers imported from @vue/server-renderer
14-
// make sure the names match!
15-
registerRuntimeHelpers({
13+
export const ssrHelpers = {
1614
[SSR_INTERPOLATE]: `_interpolate`,
1715
[SSR_RENDER_COMPONENT]: `_renderComponent`,
1816
[SSR_RENDER_SLOT]: `_renderSlot`,
@@ -22,4 +20,8 @@ registerRuntimeHelpers({
2220
[SSR_RENDER_ATTR]: `_renderAttr`,
2321
[SSR_RENDER_DYNAMIC_ATTR]: `_renderDynamicAttr`,
2422
[SSR_RENDER_LIST]: `_renderList`
25-
})
23+
}
24+
25+
// Note: these are helpers imported from @vue/server-renderer
26+
// make sure the names match!
27+
registerRuntimeHelpers(ssrHelpers)

packages/compiler-ssr/src/ssrCodegenTransform.ts

+9-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
CallExpression
1515
} from '@vue/compiler-dom'
1616
import { isString, escapeHtml, NO } from '@vue/shared'
17-
import { SSR_INTERPOLATE } from './runtimeHelpers'
17+
import { SSR_INTERPOLATE, ssrHelpers } from './runtimeHelpers'
1818
import { processIf } from './transforms/ssrVIf'
1919
import { processFor } from './transforms/ssrVFor'
2020

@@ -38,7 +38,14 @@ export function ssrCodegenTransform(ast: RootNode, options: CompilerOptions) {
3838
}
3939

4040
ast.codegenNode = createBlockStatement(context.body)
41-
ast.ssrHelpers = [...context.helpers]
41+
42+
// Finalize helpers.
43+
// We need to separate helpers imported from 'vue' vs. '@vue/server-renderer'
44+
ast.ssrHelpers = [
45+
...ast.helpers.filter(h => h in ssrHelpers),
46+
...context.helpers
47+
]
48+
ast.helpers = ast.helpers.filter(h => !(h in ssrHelpers))
4249
}
4350

4451
export type SSRTransformContext = ReturnType<typeof createSSRTransformContext>

0 commit comments

Comments
 (0)