Fehlerbehebung bei der Adobe Client-Datenschicht

Verwenden Sie diese Seite, um häufige Probleme mit der Adobe Client-Datenschicht (ACDL) zu diagnostizieren. Die meisten Prüfungen verwenden die Entwicklerkonsole Ihres Browsers.

Überprüfen der Datenschicht inspect

Führen Sie die folgenden Befehle in der Konsole aus:

Befehl
Ergebnis
adobeDataLayer.version
Die ACDL-Version, z. B. "3.0.1". Wenn es undefined ist, wurde ACDL nicht geladen.
adobeDataLayer.getState()
Der berechnete Status.
adobeDataLayer
Der Verlauf der Daten und Ereignisobjekte in der Reihenfolge, in der sie verarbeitet wurden.

Um Ereignisse bei ihrem Auftreten zu beobachten, fügen Sie einen temporären Listener hinzu:

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

Konsolenmeldungen console-messages

Nachricht
Ursache und Lösung
The following item cannot be handled by the data layer because it does not have a valid format: ...
Etwas hat einen Wert übergeben, der kein einfaches Objekt oder keine Funktion ist, z. B. eine Zeichenfolge oder ein Array. Suchen Sie den Code, der den in der Nachricht angezeigten Wert weitergibt. Siehe Ungültige Elemente.
Adobe Client Data Layer v... has already been imported/initialized on this page. You may be erroneously loading it a second time.
Die Bibliothek wurde mehr als einmal geladen. Die erste Kopie funktioniert weiterhin. Entfernen Sie die zusätzliche Kopie. Siehe Bibliothek nur einmal laden.
TypeError: adobeDataLayer.getState is not a function (oder addEventListener, removeEventListener)
Code, der eine ACDL-Methode aufgerufen hat, bevor die Bibliothek geladen wurde. Rufen Sie sie über eine Funktion auf, die Sie stattdessen per Push übertragen. Siehe Aufrufen von Methoden sicher.
ReferenceError: structuredClone is not defined
Der Browser ist älter als ACDL 3.x unterstützt. Siehe Browser-Anforderungen.
TypeError: Cannot read properties of null (reading 'event')
Code null oder undefined gepusht.
RangeError: Maximum call stack size exceeded
Ein Zuhörer schiebt etwas, das sich selbst Trigger. Siehe Vermeiden von Endlosschleifen.

Der Wortlaut von JavaScript-Fehlermeldungen variiert geringfügig zwischen Browsern. Zum Beispiel Safari-Berichte ReferenceError: Can't find variable: structuredClone.

ACDL wird nicht geladen not-loaded

Wenn adobeDataLayer.version undefined ist, überprüfen Sie Folgendes:

  • Die Bibliothek befindet sich nicht auf der Seite. Überprüfen Sie das Netzwerkbedienfeld auf adobe-client-data-layer.min.js oder für Ihre Tag-Bibliothek, wenn die Tag-Erweiterung ACDL lädt. Stellen Sie sicher, dass Ihre Inhaltssicherheitsrichtlinie das Skript zulässt.
  • adobeDataLayerist kein Array. Wenn ein anderes Skript window.adobeDataLayer auf etwas Anderes als ein Array festlegt, bevor ACDL geladen wird, hängt ACDL nicht daran.
  • Ein Skript hat das Array ersetzt. Code wie window.adobeDataLayer = []; ersetzt die Datenschicht durch ein neues, leeres Array, das die ACDL-Methoden, den berechneten Status und alle Listener verliert. Verwenden Sie immer window.adobeDataLayer = window.adobeDataLayer || [];. Siehe Erstellen des Datenschicht-Arrays.
  • Eine Funktion in der Warteschlange hat einen Fehler ausgegeben. Wenn eine Funktion, die vor dem Laden der ACDL gepusht wurde, einen Fehler ausgibt, wird der Fehler in der Konsole angezeigt und Elemente, die nach dieser Funktion in die Warteschlange gestellt wurden, gehen verloren. Fehler in den von Ihnen gepushten Funktionen erkennen.

Ein Listener läuft nicht listener-not-called

Überprüfen Sie Folgendes:

  • Der Ereignisname stimmt nicht überein. Bei Ereignisnamen wird zwischen Groß- und Kleinschreibung unterschieden und sie müssen genau übereinstimmen, einschließlich Leerzeichen.
  • Das Ereignis wurde gepusht, bevor der Listener hinzugefügt wurde, und der Listener verwendet den future. Verwenden Sie den standardmäßigen all. Siehe Umfang.
  • Der Verlauf wurde gelöscht bevor der Listener hinzugefügt wurde, sodass es nichts zu wiederholen gibt. Siehe Verlauf löschen.
  • Die Option path filtert die Push-Benachrichtigung heraus. Ein Listener mit einem Pfad wird nur für Push-Benachrichtigungen ausgeführt, die diesen Pfad enthalten. Siehe Pfad.
  • Der Listener wurde nie hinzugefügt. Wenn das Listener-Argument keine Funktion ist oder der Umfang nicht gültig ist, fügt ACDL den Listener nicht hinzu. Stattdessen werden Schlüssel wie on und handler in adobeDataLayer.getState() angezeigt.
  • Dieselbe Funktion ist bereits für Ereignis registriert. ACDL ignoriert die zweite Registrierung, auch mit verschiedenen Optionen.
  • Ein früherer Listener gab für Push einen Fehler aus, wodurch die verbleibenden Listener gestoppt wurden. Überprüfen Sie die Konsole auf Fehler.
  • Die Push-Benachrichtigung ist kein Ereignis. Ein Objekt, dessen event fehlt, leer ist oder keine Zeichenfolge ist, wird als Daten behandelt. Dadurch werden adobeDataLayer:change Listener, keine Ereignis-Listener, Trigger.

Ein Listener wird häufiger ausgeführt als erwartet listener-called-too-often

  • Es wiederholt vergangene Ereignisse. Mit dem standardmäßigen all wird ein neuer Listener für übereinstimmende Ereignisse ausgeführt, die sich bereits im Verlauf befinden. Dieses Verhalten ist zu erwarten. Verwenden Sie den future, wenn die früheren Ereignisse bereits verarbeitet wurden.
  • Es wurde mehr als einmal hinzugefügt. Code, der wiederholt ausgeführt wird und jedes Mal eine neue anonyme Funktion übergibt, fügt jedes Mal einen neuen Listener hinzu. Verwenden Sie eine benannte Funktion. Siehe Verwenden benannter Funktionen.
  • Es wird ein Pfad verwendet. Ein Listener mit einem Pfad wird für jeden Push ausgeführt, der den Pfad enthält, auch wenn sich der Wert nicht geändert hat.

Fehlende oder falsche Daten im berechneten Status state-issues

  • Der Wert wurde als event oder eventInfo gepusht. Diese Schlüssel werden nicht im berechneten Status gespeichert. Daten unter andere Schlüssel übertragen.
  • Ein Array verlorener Elemente. Durch Pushen eines Arrays wird das gesamte Array ersetzt. Pushen Sie das gesamte Array. Siehe Arrays.
  • Ein Objekt hat weder eine Zeichenfolge noch eine Zahl noch einen booleschen Wert ersetzt. Löschen Sie zunächst die Taste, indem Sie null drücken, und drücken Sie dann das Objekt. Siehe Ändern des Typs eines Werts.
  • Ein Datum oder eine Funktion wurde zu einem leeren Objekt. Daten als Zeichenfolgen oder Zahlen speichern. Siehe Werttypen.
  • Eine am Ergebnis von getState() vorgenommene Änderung hatte keine Auswirkungen. getState() gibt eine Kopie zurück. Pushen Sie stattdessen die Änderung.
  • getState()mit einem Pfad gibt undefined zurück. Überprüfen Sie die Schreibweise jedes Schlüssels im Pfad. Verwenden Sie Punkte für Array-Indizes wie items.0.sku, nicht für Klammern. Siehe Abrufen eines Werts unter einem Pfad.

Elemente fehlen im Verlauf history-issues

  • Funktionen und ungültige Elemente werden nicht beibehalten. Nur Datenobjekte und Ereignisobjekte werden beibehalten. Siehe Nach dem Laden von ACDL: ein Verlauf.
  • Ein Listener hat einen Fehler ausgegeben. Wenn ein Listener einen Fehler ausgibt, aktualisiert das Element, das ihn ausgelöst hat, den berechneten Status, wird jedoch nicht zum Verlauf hinzugefügt.
  • Ein push()-Aufruf enthielt mehrere Arten von Elementen. Pushen Sie jedes Element in einem separaten Aufruf. Siehe Pushen eines Elements pro Aufruf.
  • Der Verlauf wurde gelöscht z. B. durch die Aktion Datenschichtverlauf löschen in der Tag-Erweiterung.
recommendation-more-help
experience-platform-help-collection