AEM Sites環境でのオーサーモードエラー処理の違い
作成者モードで、あるAEM Sites環境でインラインコンポーネントエラーが発生し、別の環境でページをレンダリングできない場合は、各環境のWCMDeveloperModeFilter設定を確認してください。 このフィルターは、すべてのオーサーインスタンスでデフォルトで有効になり、すべてのパブリッシュインスタンスでデフォルトで無効になります。オーサー層の違いは、通常、プラットフォームのデフォルトではなくカスタム設定から来ます。
説明 description
Adobe Experience Manager Sitesでは、同じページで作成者モードでのエラー処理動作が、環境全体で異なる場合があります。 一部のオーサーインスタンスでは、コンポーネントレベルのエラーがインラインで表示され、ページの残りの部分は引き続きレンダリングされます。 また、コードベースが同じでも、ページ全体のレンダリングが失敗したり、オーサリングできなくなる可能性もあります。
環境
Adobe Experience Manager as a Cloud Service(すべてのバージョン)
問題/症状
- 1つのオーサーインスタンスで、コンポーネントエラーがインラインで表示され、ページの読み込みが続行されます。
- 別のオーサーインスタンスでは、同じ基本エラーにより、ページがオーサーモードで完全に失敗します。
- 根本原因は、コンポーネントクラスの参照が見つからないことが多く、すべての環境で例外が発生しますが、結果として得られるユーザーエクスペリエンスは異なります。
原因
この違いは、WCMDeveloperModeFilter (CQ WCM デバッグフィルターとも呼ばれます)の設定に起因します。 デフォルトでは、AEMはオーサーインスタンスごとにフィルターを有効にし、環境層に関係なく、パブリッシュインスタンスごとにフィルターを無効にします。 有効にすると、フィルターはコンポーネントの例外を検出し、インラインエラーメッセージを含むページをレンダリングします。 無効にすると、コンポーネントの例外によってページ全体が失敗する可能性があります。
このフィルターが異なる層のオーサー環境(開発オーサーとステージオーサーや実稼動オーサーなど)で異なる動作を示す場合は、その層のデフォルトを明示的に上書きするconfig.author.stageまたはconfig.author.prod フォルダーなどの階層固有のOSGi設定を確認します。 これは、すぐに使えるAEMのビヘイビアーではなく、プロジェクトレベルのカスタマイズです。
解決策 resolution
問題を解決するには、次の手順に従います。
WCMDeveloperModeFilterがデフォルトでどのように動作するかを確認します。オーサーインスタンスごとに有効になり、コンポーネントの例外を取得し、インラインエラーメッセージを表示してページの残りの部分がレンダリングされ、コンポーネントの例外がページ全体の失敗を引き起こす可能性があるパブリッシュインスタンスごとに無効になります。- オーサーインスタンスで開発者モードを有効にしておくと、コンポーネントエラーが表示され、早期に修正されます。これを無効にすると、コードが後のステージに到達するまで、コンポーネントレベルのエラーを非表示にできます。
com.day.cq.wcm.core.impl.WCMDeveloperModeFilterのOSGi設定を確認して、問題のある環境のDeveloper Mode設定を確認します。通常はcom.day.cq.wcm.core.impl.WCMDeveloperModeFilter.cfg.jsonで、config.author.stageやconfig.author.prodなどの階層固有の実行モードフォルダーが含まれます。enabledプロパティがfalseに設定されている場合、そのスコープのフィルターは無効になり、ファイルが存在しない場合やenabledがfalseに設定されていない場合、フィルターはAEMのデフォルトを使用します。- AEM エディターサイドパネルの「 エラー」タブを使用して、コンポーネントレベルの問題を表示します。 管理者グループのメンバーのみが開発者モードにアクセスできます。
- ベストプラクティスとして、コードを昇格する前に開発環境または低オーサー環境でコンポーネントエラーを解決します。これにより、同じエラーが高層オーサーインスタンスで予期せず表示されることはありません。
設定を変更した後、影響を受けるオーサー環境ごとに既知のコンポーネントエラーを含むページをテストして、予想されるエラー処理動作を確認します。