Maison > interface Web > js tutoriel > Comment déboguer l'erreur « Incompatibilité de l'arborescence DOM virtuelle » dans Vue.js/Nuxt.js ?

Comment déboguer l'erreur « Incompatibilité de l'arborescence DOM virtuelle » dans Vue.js/Nuxt.js ?

DDD
Libérer: 2024-11-15 03:28:02
original
1101 Les gens l'ont consulté

How to Debug the

Dépannage de l'erreur « Incompatibilité de l'arborescence DOM virtuelle » dans Vue.js/Nuxt.js

L'arborescence DOM virtuelle rendue côté client ne correspond pas au contenu rendu par le serveur" peut se produire dans les applications Vue.js/Nuxt.js en raison d'un balisage HTML incompatible ou d'éléments manquants. Pour déboguer cela efficacement, il est nécessaire d'identifier l'élément spécifique à l'origine du problème.

Inspectez l'arborescence DOM à l'aide des outils de développement Chrome

  1. Ouvrez les outils de développement Chrome (appuyez sur F12).
  2. Accédez à la page déclenchant l'erreur.
  3. Faites défiler jusqu'au message d'erreur dans la console.
  4. Cliquez sur le lien hypertexte de l'emplacement source (par exemple, vue.runtime.esm.js:574).
  5. Définissez un point d'arrêt sur cette ligne.
  6. Rechargez la page ou déclenchez à nouveau l'erreur.
  7. Pause sur le point d'arrêt, qui devrait être dans la fonction "patch" dans "vue.runtime.esm.js."
  8. Définissez un point d'arrêt sur la ligne 15 dans la fonction "hydrate", où l'assertion échoue.
  9. Déclenchez à nouveau l'erreur et évaluez "elm" et "vnode" dans la console DevTools.
  10. Examinez le contenu HTML de "elm" et comparez-le à la représentation du nœud DOM virtuel de "vnode" pour trouver l'élément spécifique. provoquant l'erreur.

Exemple d'incompatibilité HTML :

<div>
  <p>Server-rendered content <a>incorrectly nested inside</a></p>
</div>
Copier après la connexion

Représentation virtuelle de l'arborescence DOM :

h createElement(
  "div",
  // ...props
  [
    h(
      "p",
      // ...props
      [
        h(
          "a",
          // ...props
          "incorrectly nested inside"
        ),
      ],
    ),
  ],
)
Copier après la connexion

L'erreur se produit car dans l'arborescence DOM virtuelle rendue côté client, le est un enfant direct de l'élément

, alors que dans le contenu rendu par le serveur, il est imbriqué dans l'élément

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal