AEM-Site zeigt „Unerwarteter Fehler“ aufgrund von JS-Anwendungs-API-Problemen an

Wenn Ihre öffentliche AEM-Site gelegentlich mit der Meldung „Unerwarteter Fehler“ heruntergeht, kann dies auf Probleme in JavaScript-Anwendungs-API-Komponenten zurückzuführen sein. Starten Sie die Pods neu, um den Service wiederherzustellen, und ersetzen Sie dann veralteten Code durch Sling-Modelle, um die Fehlerbehandlung zu verbessern und so ein erneutes Auftreten zu verhindern.

Beschreibung description

Umgebung

Adobe Experience Manager as a Cloud Service (AEMaaCS) - Sites

Problem/Symptome

Auf der öffentlichen Website kommt es gelegentlich zu Ausfallzeiten, oft wird eine Fehlermeldung angezeigt und bestimmte Seiten können nicht geladen werden. Protokolle verweisen auf Probleme bei der JavaScript-API-Instanziierung und HTTP 500-Fehler.

Zu den Symptomen gehören:

  • Unerwarteter Fehler. Wir versuchen, es online zu stellen.Nachricht auf betroffenen Seiten.
  • JavaScript-Anwendungs-API-Fehler wie: Kennung linkDropdownLogic.js kann von der Anwendungs-API nicht korrekt instanziiert werden.
  • Sling-Ausnahmen aufgrund ungültiger Verweise oder Skriptlogik.
  • Einige Seiten können nicht geladen werden, während andere (wie die Homepage) erfolgreich neu geladen werden.

Ursache

Der Ausfall wurde durch einen JavaScript-Fehler in einer benutzerdefinierten Datei verursacht: Kennung _____.js kann von der Anwendungs-API nicht korrekt instanziiert werden.

  • Der von ECMAScript verwendete Destrukturierungscode: for (const [ _, res] of items)
  • Diese Syntax ist nicht kompatibel mit der Rhino-Engine, die von AEM Sightly verwendet wird.
  • Der Fehler trat auf, wenn das Skript versuchte, während der Replikation unvollständige Inhaltsstrukturen zu verarbeiten.

Warum es nur auf einem Pod passiert ist

Obwohl alle Publishing-Pods denselben Code hatten, schlug nur einer aus folgenden Gründen fehl:

  1. Unvollständige Inhaltsreplikation - Der Pod befand sich in einem temporären Zustand mit teilweise repliziertem Inhalt.
  2. Unsichere Iteratorbehandlung - Der JS-Code konnte keine fehlenden oder unvollständigen Datenstrukturen verarbeiten.
  3. Ressourcenerschöpfung - Die Fehlerschleife verbrauchte Systemressourcen, was zu einem Absturz führte.
  4. Keine automatische Wiederherstellung - Der Pod konnte aufgrund der anhaltenden Ressourcenerschöpfung nicht ohne manuellen Neustart wiederhergestellt werden.

Technische Insight

  • Engine-Einschränkung: Die Rhino JS-Engine unterstützt keine Destrukturierung auf Java-Iteratoren.
  • Code-Verhalten: Kann unter normalen Bedingungen funktionieren, schlägt jedoch unter Stress oder partiellen Daten fehl.
  • Impact: Ein Pod trat in eine Fehlerschleife ein, während andere normal weiterliefen.

Auflösung resolution

So beheben Sie das Problem mit der JavaScript-Anwendungs-API:

  1. Starten Sie alle Publishing-Pods neu, um die Umgebung vorübergehend zu stabilisieren. Dadurch werden die HTTP 500-Fehler gelöscht und die Site-Verfügbarkeit wiederhergestellt.
  2. Überprüfen Sie anschließend die JavaScript-Modellklassen, die Instanziierungsfehler verursachen. Ersetzen Sie veraltete JavaScript-Use-API-Komponenten durch Java-basierte Sling-Modelle, und stellen Sie sicher, dass alle Klassen, auf die verwiesen wird, über geeignete Zugriffsmethoden verfügen.
  3. Aktualisieren Sie den problematischen Code, um die Verwendung der ECMAScript-Zerstörung in Java-Iteratoren zu vermeiden. Verwenden Sie stattdessen standardmäßige Java-Iteratormuster. Fügen Sie Null-Prüfungen und Fehlerbehandlung hinzu, um unvollständige Inhaltsstrukturen sicher zu verwalten.
  4. Fügen Sie try/catch-Blöcke in Ihren JavaScript-API-Skripten hinzu, um einen vollständigen Fehler zu verhindern, wenn Inhalte fehlen. Entwerfen Sie Komponenten, um sie elegant zu reduzieren und kaskadierende Fehler zu vermeiden.
  5. Überprüfen Sie abschließend die Komponentenabhängigkeiten und erwägen Sie die Verwendung des zwischengespeicherten Fallback-Inhalts für wichtige Elemente wie die Navigation. Leistungsschalter für Komponenten implementieren, die auf externe Dienste angewiesen sind.

Verwandtes Lesen

Veraltete und entfernte Funktionen | Adobe Experience Manager

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f