SSR报错[@vue/server-renderer] Invalid VNode type: Symbol(Fragment) (symbol)
当ssr组件中使用v-for的时候会报错,我大概查了下这就是个官方的issue:
https://github.com/vuejs/core/issues/2600
大概意思就是有2个vue,核心报错的源码开发环境下在源码里的:
server-rendr.cjs.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | function renderVNode(push, vnode, parentComponent, slotScopeId) { const { type, shapeFlag, children } = vnode; switch (type) { case vue.Text: push(shared.escapeHtml(children)); break ; case vue.Comment: push(children ? `<!--${shared.escapeHtmlComment(children)}-->` : `<!---->`); break ; case vue.Static: push(children); break ; case vue.Fragment: if (vnode.slotScopeIds) { slotScopeId = (slotScopeId ? slotScopeId + ' ' : '' ) + vnode.slotScopeIds.join( ' ' ); } push(`<!--[-->`); // open renderVNodeChildren(push, children, parentComponent, slotScopeId); push(`<!--]-->`); // close break ; default : if (shapeFlag & 1 /* ELEMENT */ ) { renderElementVNode(push, vnode, parentComponent, slotScopeId); } else if (shapeFlag & 6 /* COMPONENT */ ) { push(renderComponentVNode(vnode, parentComponent, slotScopeId)); } else if (shapeFlag & 64 /* TELEPORT */ ) { renderTeleportVNode(push, vnode, parentComponent, slotScopeId); } else if (shapeFlag & 128 /* SUSPENSE */ ) { renderVNode(push, vnode.ssContent, parentComponent, slotScopeId); } else { vue.warn( '[@vue/server-renderer] Invalid VNode type:' , type, `(${ typeof type})`); } } } |
断点看了下,v-for时的shapeflag为16,这里无法解析
老师也可以帮忙看下一起看下这个问题
25
收起
正在回答 回答被采纳积分+1
1回答
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧