AEM サイトで、JS の使用 API の問題が原因で「予期しないエラー」が表示される
AEM公開サイトが断続的に停止し、「予期しないエラー」メッセージが表示される場合は、JavaScript Use API コンポーネントの問題が原因である可能性があります。 ポッドを再起動してサービスを復元し、廃止されたコードを Sling モデルに置き換え、エラー処理を改善して再発を防ぎます。
説明 description
環境
Adobe Experience Manager as a Cloud Service(AEMaaCS) - Sites
問題/症状
公開 web サイトで断続的なダウンタイムが発生し、多くの場合、エラーメッセージが表示されて特定のページの読み込みに失敗します。 ログは、JavaScriptの API インスタンス化の問題と HTTP 500 エラーを指します。
症状は次のとおりです。
- 予期しないエラー。 私たちはそれをインターネットに持ち込もうとしています。影響 受けるページのメッセージ。
- JavaScript次のような API エラーを使用します。Identifier linkDropdownLogic.js を Use API で正しくインスタンス化できません。
- 無効な参照またはスクリプトロジックが原因の Sling 例外。
- 一部のページは読み込みに失敗し、その他のページ(ホームページなど)は正常に再読み込みされます。
原因
停止は、カスタムファイルのJavaScript エラーが原因です。Identifier _____.js を Use API で正しくインスタンス化できません。
- ECMAScript のデストラクチャを使用したコード:
for (const [ _, res] of items)
- この構文は、AEMの Sightly で使用される Rhino エンジンと互換性がありません。
- スクリプトがレプリケーション中に不完全なコンテンツ構造を処理しようとしたときにエラーが発生しました。
1 つのポッドでのみ発生した理由
すべての公開ポッドに同じコードが含まれていましたが、次の理由で失敗したのは 1 つだけです。
- 不完全なコンテンツレプリケーション – ポッドは、部分的にレプリケートされたコンテンツを含む一時的な状態でした。
- 安全でない反復子処理 – JS コードは、欠落しているデータ構造や不完全なデータ構造を処理できませんでした。
- リソースの枯渇 – エラーループがシステムリソースを消費し、クラッシュが発生しました。
- 自動回復なし – リソースの枯渇が続くため、手動で再起動しないとポッドを回復できませんでした。
テクニカルInsight
- エンジンの制限:Rhino JS エンジンは Java イテレータでのデストラクチャをサポートしていません。
- コードの動作:通常の条件下で動作する場合がありますが、ストレスデータまたは部分的なデータの条件下で失敗します。
- 影響: 1 つのポッドが障害ループに入り、他のポッドは正常に動作し続けました。
解決策 resolution
JavaScriptの使用 API の問題を解決するには:
- すべての公開ポッドを再起動して、環境を一時的に安定させます。 これにより、HTTP 500 エラーがクリアされ、サイトの可用性が復元されます。
- 次に、インスタンス化エラーが発生するJavaScript モデルクラスを確認します。 非推奨(廃止予定)のJavaScriptを置き換える API コンポーネントを Java ベースの Sling モデルと併用し、参照されているすべてのクラスに適切なアクセスメソッドがあることを確認します。
- Java イテレータでの ECMAScript デストラクチャの使用を避けるために、問題のあるコードを更新します。 代わりに、標準の Java イテレータパターンを使用します。 不完全なコンテンツ構造を安全に管理するために、null チェックとエラー処理を追加します。
- JavaScriptに try/catch ブロックを追加します。API スクリプトを使用して、コンテンツが見つからない場合に完全にエラーが発生するのを防ぎます。 コンポーネントを設計して、適切にデグレードし、カスケードエラーを回避する。
- 最後に、コンポーネントの依存関係を確認し、ナビゲーションなどの重要な要素に対して、キャッシュされたフォールバックコンテンツの使用を検討します。 外部サービスに依存するコンポーネントに回路遮断器を実装します。
関連資料
非推奨(廃止予定)の機能と削除された機能 |Adobe Experience Manager
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f