AEM as a Cloud Serviceのフロントエンドパイプラインエラーのトラブルシューティング

フルスタックパイプラインをAEM as a Cloud Serviceのフロントエンド(FE)のみのパイプラインに変換する場合、プラットフォーム固有の依存関係と厳密なリンティング要件が原因で、ビルドエラーが発生する場合があります。 Windows またはmacOSで package-lock.json を生成すると、Linux ベースのCloud Managerとの互換性が失われる可能性があります。 さらに、FE パイプラインでは、フルスタック Maven ビルドには存在しないコードスタイルのチェックが適用されます。

メモ

  • Cloud Managerがフロントエンドパイプラインを実行する場合、最初に npm install を実行するのではなく、Git にある package-lock.json を使用して npm audit --production --audit-level=critical 実行するだけです。 ただし、フルスタックパイプラインは、frontend-maven-plugin を通じてリクエストしたノード/NPM バージョンをインストールし、npm install を実行するので、フルスタックパイプラインには問題が表示されません。

説明 description

環境

  • 製品:AEM as a Cloud Service - Sites
  • パイプライン:Cloud Managerを介したフロントエンドのみ(FE)パイプライン
  • ノードのバージョン:14.19.1
  • npm バージョン:6.14.x
  • ローカルビルド用のオペレーティングシステム:Windows (ローカル)、Linux (Cloud Manager コンテナ)
  • 必要な権限:Cloud Managerのデプロイメントマネージャーの役割

問題/症状

  • npm インストール中にパイプラインが失敗し、* fsevents not accessible from chokida r*などのエラーが発生する
  • package-lock.json ファイルが見つからないか、一致しないことに関連するエラー
  • ローカルビルドは、Windows またはMacでは成功しますが、Cloud Manager パイプラインでは失敗します
  • 数百の ESLint/コード形式エラーが FE のみのパイプライン障害の原因となる一方、フルスタックパイプラインはこれらのチェックをデフォルトでは実施しません

解決策 resolution

問題を解決するには、次の手順を試してください。

  1. package-lock.json モジュールに ui.frontend が存在し、リポジトリにコミットされていることを確認します。

  2. Linux 環境を使用して package-lock.jsonnode_modules を再生成します(Linux 用 Windows サブシステムまたは Docker を使用)。 FE 専用パイプラインのプラットフォーム固有の依存関係の問題を再現して解決するには、WSL ターミナルで次のコマンドを使用します。  

    code language-none
    cd /path/to/your/project
    rm -rf package-lock.json node_modules
    npm install
    git add package-lock.json
    git commit -m "Regenerate package-lock.json on Linux"
    

     
    または、Linux コンテナで実行します。
     

    code language-none
    docker run --rm -v $(pwd):/app -w /app node:16-alpine \
      sh -c "rm -rf node_modules package-lock.json && npm install"
    

     

  3. Jest、Storybook、Webpack など、古い依存関係を更新します。

  4. npm audit を実稼動環境および重大な監査レベルのフラグと共に使用して、残りの依存関係の問題を特定します。 例:npm audit --production --audit-level=critical

  5. 再生成された package-lock.json ファイルを Linux 環境からリポジトリにコミットします。

  6. FE 専用パイプラインで使用されるブランチに変更をプッシュします。

  7. Cloud Managerで FE 専用パイプラインを再実行します。

  8. ビルドプロセス中に報告された ESLint/コードスタイルのエラーに対処します。デプロイメントを成功させるには、すべてのリントエラーを解決する必要があります。

  9. 検証目的でのみ必要な場合は、package.json のビルドスクリプトから linting を一時的に削除します。 ただし、実稼動での使用はお勧めしません。

  10. 依存関係やリンティングエラーを発生させずに、ビルドステップが正常に完了することを確認します。

  11. デプロイメントに成功してもサイトのスタイルとスクリプトが読み込まれない場合は、Dispatcher設定と CDN 設定を確認します。 有効な vhost に、静的ドメインに適した ServerAlias が含まれていることを確認します。 手順については、​ フロントエンドパイプラインのデプロイメントが web サイトを中断 ​ を参照してください。

  12. パイプラインが BUILD_NPM_AUDIT_ERROR で失敗した場合は、競合する SiteConfig ノードまたは HtmlPageItemsConfig ノードを削除します。 手順については、AEM as a Cloud Service フロントエンドパイプラインでの BUILD_NPM_AUDIT_ERROR の解決方法 ​ を参照してください。

メモ

  • FE 専用パイプラインでは、フルスタック Maven ビルドよりも厳密なコードスタイルチェックが実施されます。すべてのリントエラーは、デプロイメント前に解決する必要があります。

  • package.json に次のスクリプトを追加することで、JavaScriptと CSS のリンティングエラーを修正するプロセスを自動化できます。

    code language-none
    "scripts": {
      "lint:fix": "npm run lint:js:fix && npm run lint:css:fix"
    }
    

これにより、npm run lint:fix を実行して、変更をプッシュする前に多くのリンティングの問題を自動的に修正できます。

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f