diff --git a/packages/compiler-sfc/__tests__/parse.spec.ts b/packages/compiler-sfc/__tests__/parse.spec.ts
index dc25c848c41..aa4b5b48be5 100644
--- a/packages/compiler-sfc/__tests__/parse.spec.ts
+++ b/packages/compiler-sfc/__tests__/parse.spec.ts
@@ -139,6 +139,15 @@ h1 { color: red }
expect(descriptor.template!.content).toBe(content)
})
+ test('treat empty lang attribute as the html', () => {
+ const content = `
ok
`
+ const { descriptor, errors } = parse(
+ `${content}`
+ )
+ expect(descriptor.template!.content).toBe(content)
+ expect(errors.length).toBe(0)
+ })
+
// #1120
test('alternative template lang should be treated as plain text', () => {
const content = `p(v-if="1 < 2") test`
diff --git a/packages/compiler-sfc/src/parse.ts b/packages/compiler-sfc/src/parse.ts
index ac3456e645b..303babe18f0 100644
--- a/packages/compiler-sfc/src/parse.ts
+++ b/packages/compiler-sfc/src/parse.ts
@@ -121,6 +121,7 @@ export function parse(
p.type === NodeTypes.ATTRIBUTE &&
p.name === 'lang' &&
p.value &&
+ p.value.content &&
p.value.content !== 'html'
))
) {