Op de AEM-site wordt "Onverwachte fout" weergegeven vanwege API-problemen met JS Use
Als uw openbare AEM-site soms wordt afgesloten met een 'Onverwachte fout'-bericht, kan dit worden veroorzaakt door problemen in de API-componenten voor JavaScript-gebruik. Start de pods opnieuw om de service te herstellen en verouderde code te vervangen door Sling Models en verbeter de foutafhandeling om te voorkomen dat deze opnieuw plaatsvindt.
Beschrijving description
Omgeving
Adobe Experience Manager as a Cloud Service (AEMaaCS) - Sites
Probleem/symptomen
De openbare website ervaart intermitterende onderbreking, vaak tonend een foutenmelding en het nalaten om bepaalde pagina's te laden. De logboeken richten aan de concretiseringskwesties van het Gebruik API van JavaScript en HTTP 500 fouten.
Symptomen zijn onder meer:
- Onverwachte fout. We proberen het online te brengen. op de betrokken pagina's.
- De fouten van API van het Gebruik van JavaScript zoals: Identifier linkDropdownLogic.js kan niet correct door het Gebruik API worden geconcretiseerd.
- Uitzonderingen splitsen vanwege ongeldige verwijzingen of scriptlogica.
- Sommige pagina's kunnen niet worden geladen, andere (zoals de startpagina) worden opnieuw geladen.
Oorzaak
De stroomonderbreking werd veroorzaakt door een fout van JavaScript in een douanedossier: Herkenningsteken ____.js kan niet correct door het Gebruik API worden geconcretiseerd.
- De code die is gebruikt voor ECMAScript-destructurering:
for (const [ _, res] of items) - Deze syntaxis is niet compatibel met de Rhino-engine die wordt gebruikt door AEM Sightly.
- De fout kwam voor wanneer het manuscript probeerde om onvolledige inhoudsstructuren tijdens replicatie te verwerken.
Waarom het op slechts één pod gebeurde
Hoewel alle publicatiepods dezelfde code hadden, is er slechts één code mislukt vanwege:
- Onvolledige replicatie van inhoud - De pod bevond zich in een tijdelijke staat met gedeeltelijk gerepliceerde inhoud.
- Onveilige verwerking van tussenpersonen - De JS-code kan ontbrekende of onvolledige gegevensstructuren niet verwerken.
- Uitputting van het middel - de foutenlijn verbruikte systeemmiddelen, die tot een neerstorting leiden.
- Geen automatisch herstel - De pod kan niet worden hersteld zonder handmatig opnieuw te starten vanwege aanhoudende uitputting van de bron.
Technische Insight
- Motorbeperking: de Rhino JS-engine ondersteunt geen destructurering op Java-iterators.
- Gedrag van code: Werkt mogelijk onder normale omstandigheden, maar mislukt bij stress of deelgegevens.
- Effect: één pod ging een mislukkingslijn in, terwijl anderen normaal bleven lopen.
Resolutie resolution
Het JavaScript Use API-probleem oplossen:
- Start alle publicatiepods opnieuw om de omgeving tijdelijk te stabiliseren. Dit ontruimt HTTP 500 fouten en herstelt plaatsbeschikbaarheid.
- Controleer vervolgens de JavaScript-modelklassen die instantiefouten veroorzaken. Vervang verouderde JavaScript Use API-componenten door Java-based Sling Models en zorg ervoor dat alle klassen waarnaar wordt verwezen, juiste toegangsmethoden hebben.
- Werk de problematische code bij om het gebruik van ECMAScript-destructurering op Java-iterators te voorkomen. Gebruik in plaats daarvan standaard Java-iteratorpatronen. Null-controles en foutafhandeling toevoegen om onvolledige inhoudsstructuren veilig te beheren.
- Voeg blokken try/catch toe aan uw JavaScript Use API-scripts om te voorkomen dat de inhoud volledig mislukt. Componenten ontwerpen om de kwaliteit op een elegante manier te verlagen en trapsgewijze fouten te voorkomen.
- Tot slot herzie componentengebiedsdelen en denk na gebruikend caching reserveinhoud voor kritieke elementen zoals navigatie. Voer circuitonderbrekers voor componenten uit die op de externe diensten vertrouwen.
Gerelateerde lezing
Vervangen en Verwijderde Eigenschappen | Adobe Experience Manager