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.versionVersion ACDL, par exemple
"3.0.1". S’il s’agit de undefined, ACDL n’a pas été chargé.adobeDataLayer.getState()État calculé 🔗.
adobeDataLayerL’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,)removeEventListenerCode 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 definedLe 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 exceededUn é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.jsdans 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éfinitwindow.adobeDataLayersur 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 toujourswindow.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éeallpar 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
pathfiltre 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
onethandlerapparaissent dansadobeDataLayer.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
eventest manquante, vide ou n’est pas une chaîne est traité comme une donnée. Il déclencheadobeDataLayer: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
allpar 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éefuturesi 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
eventoueventInfo. 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 renvoieundefined. Vérifiez l’orthographe de chaque clé du chemin d’accès. Utilisez des points pour les index de tableau, tels queitems.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