Преглед изворни кода

fix(compiler-sfc): should ignore nodes with no children (#464)

likui пре 6 година
родитељ
комит
1efb35e324
2 измењених фајлова са 11 додато и 0 уклоњено
  1. 8 0
      packages/compiler-sfc/__tests__/parse.spec.ts
  2. 3 0
      packages/compiler-sfc/src/parse.ts

+ 8 - 0
packages/compiler-sfc/__tests__/parse.spec.ts

@@ -3,6 +3,14 @@ import { mockWarn } from '@vue/runtime-test'
 
 describe('compiler:sfc', () => {
   mockWarn()
+
+  test('should ignore nodes with no content', () => {
+    expect(parse(`<template/>`).template).toBe(null)
+    expect(parse(`<script/>`).script).toBe(null)
+    expect(parse(`<style/>`).styles.length).toBe(0)
+    expect(parse(`<custom/>`).customBlocks.length).toBe(0)
+  })
+
   describe('error', () => {
     test('should only allow single template element', () => {
       parse(`<template><div/></template><template><div/></template>`)

+ 3 - 0
packages/compiler-sfc/src/parse.ts

@@ -81,6 +81,9 @@ export function parse(
     if (node.type !== NodeTypes.ELEMENT) {
       return
     }
+    if (!node.children.length) {
+      return
+    }
     switch (node.tag) {
       case 'template':
         if (!sfc.template) {