diff --git a/packages/compiler-ssr/__tests__/transforms/ssrTransformElement.spec.ts b/packages/compiler-ssr/__tests__/transforms/ssrTransformElement.spec.ts
new file mode 100644
index 000000000..f8b280a32
--- /dev/null
+++ b/packages/compiler-ssr/__tests__/transforms/ssrTransformElement.spec.ts
@@ -0,0 +1,25 @@
+import { compile } from '../../src'
+
+function getElementString(src: string): string {
+ return compile(src).code.match(/_push\((.*)\)/)![1]
+}
+
+describe('ssr transform element', () => {
+ test('basic elements', () => {
+ expect(getElementString(`
`)).toMatchInlineSnapshot(
+ `"\`\`"`
+ )
+ })
+
+ test('static attrs', () => {
+ expect(
+ getElementString(``)
+ ).toMatchInlineSnapshot(`"\`\`"`)
+ })
+
+ test('nested elements', () => {
+ expect(
+ getElementString(`
`)
+ ).toMatchInlineSnapshot(`"\`
\`"`)
+ })
+})
diff --git a/packages/compiler-ssr/src/ssrCodegenTransform.ts b/packages/compiler-ssr/src/ssrCodegenTransform.ts
index 1a3f9ff09..c60ba2bfd 100644
--- a/packages/compiler-ssr/src/ssrCodegenTransform.ts
+++ b/packages/compiler-ssr/src/ssrCodegenTransform.ts
@@ -5,10 +5,10 @@ import {
TemplateLiteral,
createCallExpression,
createTemplateLiteral,
- locStub,
NodeTypes,
TemplateChildNode,
- ElementTypes
+ ElementTypes,
+ createBlockStatement
} from '@vue/compiler-dom'
import { isString } from '@vue/shared'
@@ -30,11 +30,7 @@ export function ssrCodegenTransform(ast: RootNode) {
context.pushStringPart(``)
}
- ast.codegenNode = {
- type: NodeTypes.JS_BLOCK_STATEMENT,
- loc: locStub,
- body: context.body
- }
+ ast.codegenNode = createBlockStatement(context.body)
}
type SSRTransformContext = ReturnType
diff --git a/packages/compiler-ssr/src/transforms/ssrTransformElement.ts b/packages/compiler-ssr/src/transforms/ssrTransformElement.ts
index 386b66a45..e522b350f 100644
--- a/packages/compiler-ssr/src/transforms/ssrTransformElement.ts
+++ b/packages/compiler-ssr/src/transforms/ssrTransformElement.ts
@@ -5,7 +5,7 @@ import {
TemplateLiteral,
createTemplateLiteral
} from '@vue/compiler-dom'
-import { escapeHtml } from '@vue/server-renderer/src'
+import { escapeHtml } from '@vue/server-renderer'
/*
## Simple Element