Meituan-Dianping/mpvue · error
tag <${stack[i].tag}> has no matching end tag.
Error message
tag <${stack[i].tag}> has no matching end tag. What it means
Dev-only warning from parseEndTag: after the input ended, closing tags still left entries on the open-element stack, meaning those tags were never closed. The parser force-closes them and warns per tag, so the compiled template works but the markup is not well-formed.
Source
Thrown at src/compiler/parser/html-parser.js:298
if (tagName) {
for (pos = stack.length - 1; pos >= 0; pos--) {
if (stack[pos].lowerCasedTag === lowerCasedTagName) {
break
}
}
} else {
// If no tag name is provided, clean shop
pos = 0
}
if (pos >= 0) {
// Close all the open elements, up the stack
for (let i = stack.length - 1; i >= pos; i--) {
if (process.env.NODE_ENV !== 'production' &&
(i > pos || !tagName) &&
options.warn
) {
options.warn(
`tag <${stack[i].tag}> has no matching end tag.`
)
}
if (options.end) {
options.end(stack[i].tag, start, end)
}
}
// Remove the open elements from the stack
stack.length = pos
lastTag = pos && stack[pos - 1].tag
} else if (lowerCasedTagName === 'br') {
if (options.start) {
options.start(tagName, [], true, start, end)
}
} else if (lowerCasedTagName === 'p') {
if (options.start) {
options.start(tagName, [], false, start, end)View on GitHub (pinned to 6c5d78ee04)
Solutions
- Add the missing end tag for the element named in the warning
- Watch for self-closing native HTML elements, which HTML parsing does not treat as closed (<div/>) — write explicit end tags
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at src/compiler/parser/html-parser.js:298 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Meituan-Dianping/mpvue@6c5d78ee04 (2026-09-02).
Data as JSON: /api/errors/028ba5e95fce2b92.
Report an issue: GitHub.