mirror of https://github.com/vuejs/core.git
fix(compiler-sfc): require <template> or <script> in SFC (#6781)
fix #6676
This commit is contained in:
parent
9768949ce0
commit
a0c7f271a2
|
@ -268,7 +268,9 @@ h1 { color: red }
|
|||
})
|
||||
|
||||
test('treat custom blocks as raw text', () => {
|
||||
const { errors, descriptor } = parse(`<foo> <-& </foo>`)
|
||||
const { errors, descriptor } = parse(
|
||||
`<template><input></template><foo> <-& </foo>`
|
||||
)
|
||||
expect(errors.length).toBe(0)
|
||||
expect(descriptor.customBlocks[0].content).toBe(` <-& `)
|
||||
})
|
||||
|
@ -309,5 +311,13 @@ h1 { color: red }
|
|||
).errors.length
|
||||
).toBe(0)
|
||||
})
|
||||
|
||||
// # 6676
|
||||
test('should throw error if no <template> or <script> is present', () => {
|
||||
assertWarning(
|
||||
parse(`import { ref } from 'vue'`).errors,
|
||||
`At least one <template> or <script> is required in a single file component`
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -149,7 +149,6 @@ export function parse(
|
|||
errors.push(e)
|
||||
}
|
||||
})
|
||||
|
||||
ast.children.forEach(node => {
|
||||
if (node.type !== NodeTypes.ELEMENT) {
|
||||
return
|
||||
|
@ -218,7 +217,13 @@ export function parse(
|
|||
break
|
||||
}
|
||||
})
|
||||
|
||||
if (!descriptor.template && !descriptor.script && !descriptor.scriptSetup) {
|
||||
errors.push(
|
||||
new SyntaxError(
|
||||
`At least one <template> or <script> is required in a single file component.`
|
||||
)
|
||||
)
|
||||
}
|
||||
if (descriptor.scriptSetup) {
|
||||
if (descriptor.scriptSetup.src) {
|
||||
errors.push(
|
||||
|
|
Loading…
Reference in New Issue