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
問題を解決するには、次の手順に従います。
-
カスタム UI テストの依存関係、特にWebdriverIOに関連する依存関係(
@wdio/loggerやwdio-html-nice-reporterなど)を確認します。 -
ESM互換のためにインポート文を更新します。
- CommonJS ファイル (
launcher.jsやcomparisonstrategy.jsなど)からすべてのrequire('@wdio/logger')のインポートを削除します。 - これらのインポートは、単純なログステートメントに置き換えるか、必要に応じて動的な
import()を使用します。
- CommonJS ファイル (
-
レポーター設定の調整:
- ESMのみのレポーター(
wdio-html-nice-reporterなど)を使用する場合は、設定ファイル(wdio.conf.commons.jsなど)でrequire()ではなくimport構文を使用して読み込まれることを確認してください。 - 依存関係セットで必要に応じて構成ファイルをESM互換にリファクタリングするか、Cloud Manager実行用にreporters配列からESM専用のreportersを削除します。
- ESMのみのレポーター(
-
インデックス作成エラーを回避するために、デプロイメントパイプラインを実行する前に、ターゲット環境が完全にアクティブであることを確認します。 環境が以前に休止されていた場合は、その環境をアクティブ化してパイプラインを再実行します。
-
デプロイメントパイプラインを再実行し、エラーを監視します。
-
カスタム UI テスト手順が正常に完了し、モジュール互換性エラーなしでデプロイメントが続行することを確認します。
recommendation-more-help
experience-cloud-kcs-help-kbarticles