From 8f6b6690a2011846446804267ec49073996c3800 Mon Sep 17 00:00:00 2001 From: Evan You Date: Wed, 5 Feb 2020 11:20:50 -0500 Subject: [PATCH] fix(compiler-ssr): import helpers from correct packages --- packages/compiler-ssr/__tests__/ssrElement.spec.ts | 2 +- packages/compiler-ssr/__tests__/ssrVShow.spec.ts | 11 ++++++----- packages/compiler-ssr/src/runtimeHelpers.ts | 10 ++++++---- packages/compiler-ssr/src/ssrCodegenTransform.ts | 11 +++++++++-- 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/packages/compiler-ssr/__tests__/ssrElement.spec.ts b/packages/compiler-ssr/__tests__/ssrElement.spec.ts index 61df86ce1e8..1f08706fd3f 100644 --- a/packages/compiler-ssr/__tests__/ssrElement.spec.ts +++ b/packages/compiler-ssr/__tests__/ssrElement.spec.ts @@ -51,7 +51,7 @@ describe('ssr: element', () => { test('`).code) .toMatchInlineSnapshot(` - "const { _renderAttrs, _interpolate } = require(\\"vue\\") + "const { _renderAttrs, _interpolate } = require(\\"@vue/server-renderer\\") return function ssrRender(_ctx, _push, _parent) { let _temp0 diff --git a/packages/compiler-ssr/__tests__/ssrVShow.spec.ts b/packages/compiler-ssr/__tests__/ssrVShow.spec.ts index 6f7a0b8d170..48f11f84244 100644 --- a/packages/compiler-ssr/__tests__/ssrVShow.spec.ts +++ b/packages/compiler-ssr/__tests__/ssrVShow.spec.ts @@ -3,7 +3,7 @@ import { compile } from '../src' describe('ssr: v-show', () => { test('basic', () => { expect(compile(`
`).code).toMatchInlineSnapshot(` - "const { _renderStyle } = require(\\"vue\\") + "const { _renderStyle } = require(\\"@vue/server-renderer\\") return function ssrRender(_ctx, _push, _parent) { _push(\`
\`) @@ -14,7 +14,7 @@ describe('ssr: v-show', () => { test('with static style', () => { expect(compile(`
`).code) .toMatchInlineSnapshot(` - "const { _renderStyle } = require(\\"vue\\") + "const { _renderStyle } = require(\\"@vue/server-renderer\\") const _hoisted_1 = {\\"color\\":\\"red\\"} @@ -30,7 +30,7 @@ describe('ssr: v-show', () => { test('with dynamic style', () => { expect(compile(`
`).code) .toMatchInlineSnapshot(` - "const { _renderStyle } = require(\\"vue\\") + "const { _renderStyle } = require(\\"@vue/server-renderer\\") return function ssrRender(_ctx, _push, _parent) { _push(\` { compile(`
`) .code ).toMatchInlineSnapshot(` - "const { _renderStyle } = require(\\"vue\\") + "const { _renderStyle } = require(\\"@vue/server-renderer\\") const _hoisted_1 = {\\"color\\":\\"red\\"} @@ -66,7 +66,8 @@ describe('ssr: v-show', () => { `
` ).code ).toMatchInlineSnapshot(` - "const { mergeProps, _renderAttrs } = require(\\"vue\\") + "const { mergeProps } = require(\\"vue\\") + const { _renderAttrs } = require(\\"@vue/server-renderer\\") const _hoisted_1 = {\\"color\\":\\"red\\"} diff --git a/packages/compiler-ssr/src/runtimeHelpers.ts b/packages/compiler-ssr/src/runtimeHelpers.ts index 6c98e3ce10b..392b0eadc7c 100644 --- a/packages/compiler-ssr/src/runtimeHelpers.ts +++ b/packages/compiler-ssr/src/runtimeHelpers.ts @@ -10,9 +10,7 @@ export const SSR_RENDER_ATTR = Symbol(`renderAttr`) export const SSR_RENDER_DYNAMIC_ATTR = Symbol(`renderDynamicAttr`) export const SSR_RENDER_LIST = Symbol(`renderList`) -// Note: these are helpers imported from @vue/server-renderer -// make sure the names match! -registerRuntimeHelpers({ +export const ssrHelpers = { [SSR_INTERPOLATE]: `_interpolate`, [SSR_RENDER_COMPONENT]: `_renderComponent`, [SSR_RENDER_SLOT]: `_renderSlot`, @@ -22,4 +20,8 @@ registerRuntimeHelpers({ [SSR_RENDER_ATTR]: `_renderAttr`, [SSR_RENDER_DYNAMIC_ATTR]: `_renderDynamicAttr`, [SSR_RENDER_LIST]: `_renderList` -}) +} + +// Note: these are helpers imported from @vue/server-renderer +// make sure the names match! +registerRuntimeHelpers(ssrHelpers) diff --git a/packages/compiler-ssr/src/ssrCodegenTransform.ts b/packages/compiler-ssr/src/ssrCodegenTransform.ts index ade82b0c788..8a0758aed09 100644 --- a/packages/compiler-ssr/src/ssrCodegenTransform.ts +++ b/packages/compiler-ssr/src/ssrCodegenTransform.ts @@ -14,7 +14,7 @@ import { CallExpression } from '@vue/compiler-dom' import { isString, escapeHtml, NO } from '@vue/shared' -import { SSR_INTERPOLATE } from './runtimeHelpers' +import { SSR_INTERPOLATE, ssrHelpers } from './runtimeHelpers' import { processIf } from './transforms/ssrVIf' import { processFor } from './transforms/ssrVFor' @@ -38,7 +38,14 @@ export function ssrCodegenTransform(ast: RootNode, options: CompilerOptions) { } ast.codegenNode = createBlockStatement(context.body) - ast.ssrHelpers = [...context.helpers] + + // Finalize helpers. + // We need to separate helpers imported from 'vue' vs. '@vue/server-renderer' + ast.ssrHelpers = [ + ...ast.helpers.filter(h => h in ssrHelpers), + ...context.helpers + ] + ast.helpers = ast.helpers.filter(h => !(h in ssrHelpers)) } export type SSRTransformContext = ReturnType