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

  1. Add the missing end tag for the element named in the warning
  2. 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.