Résolution des problèmes liés à la couche de données client Adobe

Utilisez cette page pour diagnostiquer les problèmes courants liés à la couche de données client (ACDL) Adobe. La plupart des vérifications utilisent la console de développement de votre navigateur.

Inspecter la couche de données inspect

Exécutez les commandes suivantes dans la console :

Commande
Résultat
adobeDataLayer.version
Version ACDL, par exemple "3.0.1". S’il s’agit de undefined, ACDL n’a pas été chargé.
adobeDataLayer.getState()
État calculé 🔗.
adobeDataLayer
L’historique des objets de données et d’événement, dans l’ordre dans lequel ils ont été traités.

Pour observer les événements à mesure qu’ils se produisent, ajoutez un écouteur temporaire :

adobeDataLayer.addEventListener("adobeDataLayer:event", function(event) {
  console.log("ACDL event:", event.event, event);
}, { scope: "future" });

Messages de console console-messages

Message
Cause et solution
The following item cannot be handled by the data layer because it does not have a valid format: ...
Quelque chose a envoyé une valeur qui n’est pas un objet simple ou une fonction, telle qu’une chaîne ou un tableau. Recherchez le code qui transmet la valeur affichée dans le message. Voir Éléments non valides.
Adobe Client Data Layer v... has already been imported/initialized on this page. You may be erroneously loading it a second time.
La bibliothèque a été chargée plusieurs fois. La première copie continue de fonctionner. Supprimez la copie supplémentaire. Voir Charger la bibliothèque une seule fois.
TypeError: adobeDataLayer.getState is not a function (ou addEventListener,)removeEventListener
Code appelé méthode ACDL avant le chargement de la bibliothèque. Appelez-le à partir d’une fonction que vous poussez à la place. Voir Méthodes d’appel sécurisées.
ReferenceError: structuredClone is not defined
Le navigateur est plus ancien que ne le prend en charge ACDL 3.x. Voir Configuration requise du navigateur.
TypeError: Cannot read properties of null (reading 'event')
Code transmis null ou undefined.
RangeError: Maximum call stack size exceeded
Un écouteur envoie quelque chose qui se déclenche lui-même. Voir Éviter les boucles sans fin.

La formulation des messages d’erreur JavaScript varie légèrement d’un navigateur à l’autre. Par exemple, Safari signale ReferenceError: Can't find variable: structuredClone.

ACDL ne se charge pas not-loaded

Si adobeDataLayer.version est undefined, vérifiez les éléments suivants :

  • La bibliothèque n’est pas sur la page. Recherchez adobe-client-data-layer.min.js dans le panneau réseau ou recherchez votre bibliothèque de balises si l’extension de balise charge l’ACDL. Assurez-vous que votre politique de sécurité du contenu autorise le script.
  • adobeDataLayern’est pas un tableau. Si un autre script définit window.adobeDataLayer sur autre chose qu’un tableau avant le chargement de l’ACDL, l’ACDL ne s’y connecte pas.
  • Un script a remplacé le tableau. Un code tel que window.adobeDataLayer = []; remplace la couche de données par un nouveau tableau vide, ce qui perd les méthodes ACDL, l’état calculé et tous les écouteurs. Utilisez toujours window.adobeDataLayer = window.adobeDataLayer || [];. Voir Créer le tableau de couche de données.
  • Une fonction en file d’attente a généré une erreur. Si une fonction qui a été transmise avant le chargement de l’ACDL renvoie une erreur, celle-ci s’affiche dans la console et les éléments qui étaient placés en file d’attente après cette fonction sont perdus. Capturez les erreurs dans les fonctions que vous poussez.

Un écouteur ne s’exécute pas listener-not-called

Vérifiez les points suivants :

  • Le nom de l’événement ne correspond pas. Les noms des événements sont sensibles à la casse et doivent correspondre exactement, y compris les espaces.
  • L’événement a été transmis avant l’ajout de l’écouteur, qui utilise la portée future. Utiliser la portée all par défaut. Voir Portée.
  • L’historique a été effacé avant l’ajout de l’écouteur, il n’y a donc rien à relire. Voir Effacer l’historique.
  • L’option path filtre la notification push. Un listener avec un chemin d’accès s’exécute uniquement pour les notifications push qui incluent ce chemin d’accès. Voir Chemin.
  • L’écouteur n’a jamais été ajouté. Si l’argument listener n’est pas une fonction ou si la portée n’est pas valide, ACDL n’ajoute pas l’écouteur. Au lieu de cela, des clés telles que on et handler apparaissent dans adobeDataLayer.getState().
  • La même fonction est déjà enregistrée pour l’événement. ACDL ignore le deuxième enregistrement, même avec différentes options.
  • Un écouteur précédent a généré une erreur pour la même notification push, ce qui arrête les écouteurs restants. Recherchez des erreurs dans la console.
  • La notification push n’est pas un événement. Un objet dont la valeur event est manquante, vide ou n’est pas une chaîne est traité comme une donnée. Il déclenche adobeDataLayer:change écouteurs, et non des écouteurs d’événement.

Un écouteur s’exécute plus souvent que prévu. listener-called-too-often

  • Cela relit les événements passés. Avec la portée all par défaut, un nouveau programme d’écoute s’exécute pour les événements correspondants qui se trouvent déjà dans l’historique. Ce comportement est attendu. Utilisez la portée future si les événements précédents ont déjà été gérés.
  • Il a été ajouté plus d’une fois. Le code qui s’exécute à plusieurs reprises et transmet une nouvelle fonction anonyme à chaque fois ajoute un nouveau listener à chaque fois. Utilisez une fonction nommée. Voir Utiliser des fonctions nommées.
  • Un chemin d’accès est utilisé. Un listener avec un chemin d’accès s’exécute pour chaque notification push qui inclut le chemin d’accès, même si la valeur n’a pas changé.

Données manquantes ou incorrectes à l’état calculé state-issues

  • La valeur a été transmise en tant que event ou eventInfo. Ces clés ne sont pas stockées à l’état calculé. Envoyez les données sous d’autres clés.
  • Un tableau a perdu des éléments. L’envoi d’un tableau remplace l’ensemble du tableau . Envoyez la baie complète. Voir Tableaux.
  • Un objet n’a pas remplacé de chaîne, de nombre ou de valeur booléenne. Supprimez d’abord la clé en poussant null, puis poussez l’objet . Voir Modifier le type d’une valeur.
  • Une date ou une fonction est devenue un objet vide. Stocker les dates sous forme de chaînes ou de nombres. Voir Types de valeur.
  • Une modification apportée au résultat de getState() n’a eu aucun effet. getState() renvoie une copie. Poussez plutôt la modification.
  • getState()avec un chemin d’accès renvoie undefined. Vérifiez l’orthographe de chaque clé du chemin d’accès. Utilisez des points pour les index de tableau, tels que items.0.sku, et non des crochets. Voir Obtenir une valeur à un chemin.

Éléments manquants dans l’historique history-issues

  • Les fonctions et les éléments non valides ne sont pas conservés. Seuls les objets de données et les objets d’événement sont conservés. Voir Après le chargement de l’ACDL : un historique.
  • Un écouteur a généré une erreur. Lorsqu’un écouteur renvoie une erreur, l’élément qui l’a déclenché met à jour l’état calculé, mais n’est pas ajouté à l’historique.
  • Un appel push() contenait plusieurs types d’éléments. Intégrez chaque élément dans un appel distinct. Voir Intégrer un élément par appel.
  • L’historique a été effacé, par exemple par l’action Effacer l’historique de la couche de données dans l’extension de balise.
recommendation-more-help
experience-platform-help-collection