ESM/CommonJSの互換性が原因で、カスタム UI テスト中にAEM Cloud Managerのデプロイメントエラーを解決する

この記事では、ES モジュール(ESM)とCommonJSの依存関係の間の互換性の問題によって引き起こされる、Adobe Experience Manager(AEM)Cloud Managerのカスタム UI テスト手順でデプロイメントパイプラインのエラーを解決する手順について説明します。

説明 description

環境

Adobe Experience Manager as a Cloud Service(すべてのバージョン)

問題/症状

  • Cloud Managerのカスタム UI テスト手順で、デプロイメントパイプラインが失敗します。
  • エラーログに次のようなメッセージが表示されます。ERR_REQUIRE_ESM: ES モジュールを読み込むには読み込みを使用する必要があります:@wdio/logger。
  • 構成ファイルのrequire()を使用してESM専用レポーター(例:wdio-html-nice-reporter)を読み込むと、追加のエラーが発生し、同様の​ERR_REQUIRE_ESM エラーが発生します。
  • デプロイメント中にターゲット環境が完全にアクティブでない場合も、インデックス作成エラーが発生する可能性があります。

原因

このエラーは、カスタム UI テスト設定のCommonJSとES モジュールの依存関係の間に互換性がないことが原因です。 さらに、ターゲット環境がアクティブでない場合、デプロイメントが失敗することがあります。

解決策 resolution

問題を解決するには、次の手順に従います。

  1. カスタム UI テストの依存関係、特にWebdriverIOに関連する依存関係(@wdio/loggerやwdio-html-nice-reporterなど)を確認します。

  2. ESM互換のためにインポート文を更新します。

    • CommonJS ファイル (launcher.jsやcomparisonstrategy.jsなど)からすべてのrequire('@wdio/logger')のインポートを削除します。
    • これらのインポートは、単純なログステートメントに置き換えるか、必要に応じて動的なimport()を使用します。
  3. レポーター設定の調整:

    • ESMのみのレポーター(wdio-html-nice-reporterなど)を使用する場合は、設定ファイル(wdio.conf.commons.jsなど)でrequire()ではなくimport構文を使用して読み込まれることを確認してください。
    • 依存関係セットで必要に応じて構成ファイルをESM互換にリファクタリングするか、Cloud Manager実行用にreporters配列からESM専用のreportersを削除します。
  4. インデックス作成エラーを回避するために、デプロイメントパイプラインを実行する前に、ターゲット環境が完全にアクティブであることを確認します。 環境が以前に休止されていた場合は、その環境をアクティブ化してパイプラインを再実行します。

  5. デプロイメントパイプラインを再実行し、エラーを監視します。

  6. カスタム UI テスト手順が正常に完了し、モジュール互換性エラーなしでデプロイメントが続行することを確認します。

recommendation-more-help
experience-cloud-kcs-help-kbarticles