Vuejs 오류: 클라이언트 렌더링 가상 DOM 트리가 서버 렌더링과 일치하지 않습니다.
P粉006847750
2023-08-27 20:39:55
<p>내 앱에서 Nuxt.js/Vuejs를 사용하고 있는데 다른 위치에서 계속 이 오류가 발생합니다. </p>
<pre class="brush:php;toolbar:false;">클라이언트 측에서 렌더링된 가상 DOM 트리가 서버에서 렌더링된 콘텐츠와 일치하지 않습니다.
이는 잘못된 HTML 마크업(예: <p> 내에 블록 수준 요소가 중첩되거나 <tbody>이 누락됨)으로 인해 발생할 수 있습니다.
수분 공급을 중단하고 전체 클라이언트측 렌더링을 수행합니다.</pre>
<p>이 오류를 디버깅하는 가장 좋은 방법이 무엇인지 알고 싶습니다. 이것이 오류가 있는 위치를 비교하고 찾을 수 있도록 클라이언트와 서버의 가상 DOM 트리를 기록/가져오는 방법입니까? </p>
<p>내 신청서의 용량이 커서 수동으로 확인하기가 어렵습니다. </p>
저에게 이 오류는 标签,我把
AsyncData
中获取数组列表并通过v-for
渲染
块中的 >v-for 코드에서 문제를 해결했기 때문에 발생했습니다일부 답변: Chrome DevTools를 사용하면 문제를 찾고 문제를 일으키는 요소가 무엇인지 정확하게 확인할 수 있습니다. 다음을 수행하세요(저는 Nuxt 5.6.0 및 Chrome 64.0.3282.186을 사용하여 이 작업을 수행했습니다)
msg
변수 위로 마우스를 이동하면 메시지를 볼 수 있습니다.patch
中执行行上方 4 行的Hydro
函数调用上。将打开指向Hydrate
소스 하이퍼링크 위로 마우스를 가져갑니다.enchanted
函数中,从开头移动大约 15 行,并设置一个断点,在assertNodeMatch
返回后返回false
假
. 거기에 중단점을 설정하고 다른 모든 중단점을 삭제합니다.enchanted
函数中停止。切换到 DevTools 控制台并评估elm
,然后评估vnode
에서 이루어져야 합니다. 여기서 elm은 서버에서 렌더링되는 DOM 요소로 나타나고 vnode는 가상 DOM 노드로 나타납니다. Elm은 오류가 발생한 위치를 파악할 수 있도록 HTML로 인쇄합니다.