{"record":{"id":"028ba5e95fce2b92","repo":"Meituan-Dianping/mpvue","slug":"tag-stack-i-tag-has-no-matching-end-tag","errorCode":null,"errorMessage":"tag <${stack[i].tag}> has no matching end tag.","messagePattern":"tag <(.+?)> has no matching end tag\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/compiler/parser/html-parser.js","lineNumber":298,"sourceCode":"    if (tagName) {\n      for (pos = stack.length - 1; pos >= 0; pos--) {\n        if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n          break\n        }\n      }\n    } else {\n      // If no tag name is provided, clean shop\n      pos = 0\n    }\n\n    if (pos >= 0) {\n      // Close all the open elements, up the stack\n      for (let i = stack.length - 1; i >= pos; i--) {\n        if (process.env.NODE_ENV !== 'production' &&\n          (i > pos || !tagName) &&\n          options.warn\n        ) {\n          options.warn(\n            `tag <${stack[i].tag}> has no matching end tag.`\n          )\n        }\n        if (options.end) {\n          options.end(stack[i].tag, start, end)\n        }\n      }\n\n      // Remove the open elements from the stack\n      stack.length = pos\n      lastTag = pos && stack[pos - 1].tag\n    } else if (lowerCasedTagName === 'br') {\n      if (options.start) {\n        options.start(tagName, [], true, start, end)\n      }\n    } else if (lowerCasedTagName === 'p') {\n      if (options.start) {\n        options.start(tagName, [], false, start, end)","sourceCodeStart":280,"sourceCodeEnd":316,"githubUrl":"https://github.com/Meituan-Dianping/mpvue/blob/6c5d78ee04f58c6d782c456dfcf0fe63c0b7f89b/src/compiler/parser/html-parser.js#L280-L316","documentation":"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.","triggerScenarios":"Thrown at src/compiler/parser/html-parser.js:298 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6c5d78ee04f58c6d782c456dfcf0fe63c0b7f89b","analyzedAt":"2026-09-02T05:17:40.946Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T11:17:12.671Z"}