ホームページ > ウェブフロントエンド > jsチュートリアル > Vue.js/Nuxt.js の「仮想 DOM ツリーの不一致」エラーをデバッグするには?

Vue.js/Nuxt.js の「仮想 DOM ツリーの不一致」エラーをデバッグするには?

DDD
リリース: 2024-11-15 03:28:02
オリジナル
1094 人が閲覧しました

How to Debug the

Vue.js/Nuxt.js の「仮想 DOM ツリーの不一致」エラーのトラブルシューティング

「クライアント側でレンダリングされた仮想 DOM ツリー」サーバーでレンダリングされたコンテンツと一致しません」というエラーが Vue.js/Nuxt.js アプリケーションで発生する可能性があります。 HTML マークアップの不一致または要素の欠落。これを効果的にデバッグするには、問題の原因となっている特定の要素を特定する必要があります。

Chrome DevTools を使用して DOM ツリーを検査する

  1. Chrome DevTools を開きます ( F12).
  2. をトリガーするページに移動します。エラー。
  3. コンソールでエラー メッセージまで下にスクロールします。
  4. ソースの場所のハイパーリンクをクリックします (例: vue.runtime.esm.js:574)。
  5. その行にブレークポイントを設定します。
  6. ページをリロードするか、エラーをトリガーします
  7. ブレークポイントで一時停止します。ブレークポイントは、「vue.runtime.esm.js」内の「patch」関数内にある必要があります。
  8. 「ハイドレート」の 15 行目にブレークポイントを設定します。
  9. 関数でアサーションが失敗します。
  10. エラーを再度トリガーし、DevTools で "elm" と "vnode" を評価します。 console.
「elm」の HTML コンテンツを調べ、それを「vnode」の仮想 DOM ノード表現と比較して、エラーの原因となっている特定の要素を見つけます。

HTML の不一致の例:
<div>
  <p>Server-rendered content <a>incorrectly nested inside</a></p>
</div>
ログイン後にコピー

仮想 DOM ツリー表現:
h createElement(
  "div",
  // ...props
  [
    h(
      "p",
      // ...props
      [
        h(
          "a",
          // ...props
          "incorrectly nested inside"
        ),
      ],
    ),
  ],
)
ログイン後にコピー

クライアント側でレンダリングされた仮想 DOM ツリーの が原因でエラーが発生します。要素は

の直接の子です。要素は、サーバーでレンダリングされたコンテンツ内では

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート