{"record":{"id":"32723b9bd8b273a1","repo":"Meituan-Dianping/mpvue","slug":"multiple-root-nodes-returned-from-render-function","errorCode":null,"errorMessage":"Multiple root nodes returned from render function. Render function should return a single root node.","messagePattern":"Multiple root nodes returned from render function\\. Render function should return a single root node\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/core/instance/render.js","lineNumber":114,"sourceCode":"    try {\n      vnode = render.call(vm._renderProxy, vm.$createElement)\n    } catch (e) {\n      handleError(e, vm, `render function`)\n      // return error render result,\n      // or previous vnode to prevent render error causing blank component\n      /* istanbul ignore else */\n      if (process.env.NODE_ENV !== 'production') {\n        vnode = vm.$options.renderError\n          ? vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e)\n          : vm._vnode\n      } else {\n        vnode = vm._vnode\n      }\n    }\n    // return empty vnode in case the render function errored out\n    if (!(vnode instanceof VNode)) {\n      if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n        warn(\n          'Multiple root nodes returned from render function. Render function ' +\n          'should return a single root node.',\n          vm\n        )\n      }\n      vnode = createEmptyVNode()\n    }\n    // set parent\n    vnode.parent = _parentVnode\n    return vnode\n  }\n\n  // internal render helpers.\n  // these are exposed on the instance prototype to reduce generated render\n  // code size.\n  Vue.prototype._o = markOnce\n  Vue.prototype._n = toNumber\n  Vue.prototype._s = toString","sourceCodeStart":96,"sourceCodeEnd":132,"githubUrl":"https://github.com/Meituan-Dianping/mpvue/blob/6c5d78ee04f58c6d782c456dfcf0fe63c0b7f89b/src/core/instance/render.js#L96-L132","documentation":"Raised in the dev branch of the instance's _render method after calling the render function: the returned vnode (or its children normalization) revealed more than one root-level node. Vue 2 component render functions must return exactly one root vnode; multiple siblings, a return of an array, or text plus an element at the top level all violate this and the extra nodes are dropped/truncated during patching.","triggerScenarios":"Thrown at src/core/instance/render.js:114 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Wrap the multiple elements in a single root element (often a <div>) or use a renderless single root","Return exactly one vnode from the render function — combine siblings under one createElement call","Move stray top-level text/comments inside the root element"],"exampleFix":null,"handlingStrategy":"validation","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"}