Azure 用の JavaScript アプリケーションを開発するときは、ローカル開発環境とホスト ランタイム環境で Node.js のバージョンを調整することが重要です。 このバージョンの配置により、互換性が確保され、ランタイム エラーの可能性が軽減され、Azure プラットフォームの完全な機能が使用されます。 この記事では、Azure でホストされるアプリケーションとサービスに適した Node.js バージョンを選択する方法について説明します。
Node.js のバージョン
Node.js は、長期サポート (LTS) と現在のリリースの両方を含む予測可能なリリース スケジュールに従います。 LTS バージョンは、長期的なメンテナンスと安定性のために指定されているため、運用環境に最適です。 これらのバージョンは、重要なバグ修正、セキュリティ更新プログラム、およびパフォーマンスの向上を長期間 (通常は 30 か月間) 受け取ります。 Node.js は、偶数/奇数番号システムを使用して LTS と現在のリリースを区別します。偶数のバージョン (18、20 など) は LTS リリース、奇数バージョン (19、21 など) は現在のリリースです。 現在のリリースには最新の機能と機能強化が含まれていますが、サポートされるのは 6 か月間のみです。その後、偶数の場合は LTS リリースに移行します。
6 か月の期間が Azure ホスティング プラットフォーム のランタイムと SDK とずれる可能性があるため、運用環境では現在のリリースを使用しないでください。 Node.js の開発コンテナーには、奇数/現在のバージョンが用意されていないことがわかります。
前提 条件
すべての Azure SDKS とホスティング サービスでは、Node.jsの LTS バージョン
また、デプロイ先のホスティング サービスと、デプロイされたアプリケーションで使用する Azure サービスも把握しておく必要があります。
環境間の互換性
アプリケーションで使用する Azure サービスと SDK を確認したら、アプリケーションのすべての環境で同じバージョンの Node.jsをビルドして実行できるようにします。
- ローカル開発環境または開発コンテナー
- CI/CD プロセス環境
- アプリケーション ホスト ランタイム
- Azure SDK
環境全体で異なるバージョンの使用に関連する問題の説明については、「互換性の問題」を参照してください。
ホスティング サービス
Azure ホスティング サービスを使用する場合は、コンテナーをホストにデプロイするか、ホストのランタイムとして Node.js バージョンを選択するかを選択できます。 どちらの場合も、ランタイムのバージョン、アプリケーション コード、および Azure SDK などの依存関係を調整する必要があります。
ランタイム情報を検索するには、次の表を使用します。
サービス
バージョン情報
Linux ランタイムの場合。 次の Azure CLI コマンドを実行して、サポートされているすべてのバージョンを表示することもできます。
az webapp list-runtimes | grep node
新しいプロジェクトでは、最新のプログラミング モデルを使用する必要があります。
考慮すべきランタイムは 2 つあります。静的 Web Apps で API をホストしている場合は、フロントエンドと API です。
SWA CLI は、プロキシ、認証、およびその他の構成を含む開発環境の機能を提供します。
Azure SDK
Azure SDK には、サポート ポリシーのに記載されている Node.js LTS バージョンが必要です。 ホスティング環境でサポートされている LTS バージョンと SDK が一致しない場合、新しい Node.js LTS バージョンの検証に時間がかかる場合があります。 通常、3 つのバージョンの Node.js 長期サポート バージョンとしてマークされているため、通常は中間バージョンを対象にすることができます。 このターゲットを使用すると、アプリケーションが次の LTS バージョンに移行できることをテストして確認できます。
複数のバージョンの Node.js を管理する
ローカル環境とリモート環境で複数のバージョンの Node.js を管理する必要がある場合は、次のことをお勧めします。
- Development Containers: 特定の Node.js バージョンのコンテナーを使用します。 コンテナーを使用して、複数の環境で Node.js のバージョンを管理できます。 Visual Studio Code の Remote - Containers 拡張機能、このプロセスを簡略化します。
- NVM (ノード バージョン マネージャー): Node.jsのローカル バージョンを設定または切り替えるコマンド ライン インターフェイス。
目的の用途に基づいて Node.js をダウンロードしてインストールする
要件に基づいて Node.js をダウンロードしてインストールできます。
互換性の問題
Node.js バージョンが複数の環境で一致しない場合に発生する可能性がある互換性の問題の一般的なカテゴリを次に示します。
セキュリティの脆弱性: 既知のセキュリティ脆弱性を持つ古いバージョンを使用すると、アプリケーションがセキュリティ リスクにさらされる可能性があります。
構文エラー: 古い Node.js バージョンではサポートされていない最新の JavaScript 構文を使用するアプリケーションでは、構文エラーが発生する可能性があります。 これらのエラーにより、アプリケーションが実行されなくなります。
非推奨の API: 新しい Node.js バージョンで非推奨になった API は、古いバージョンでも存在する可能性があり、バージョンが揃っていない場合は予期しない動作やランタイム エラーが発生する可能性があります。
パフォーマンス低下: 新しい Node.js バージョンには、多くの場合、パフォーマンスの向上が含まれます。 古いバージョンでアプリケーションを実行すると、実行時間が遅くなり、パフォーマンスが低下する可能性があります。
一貫性のない動作: バッファー処理、イベント ループ動作、モジュール解決など、Node.js バージョンが特定の操作を処理する方法の違いにより、環境間で動作が一貫性を失う可能性があります。
依存関係の競合の: Node.js あるバージョンの Node.js と互換性のないモジュールまたはパッケージが別のバージョンと互換性がない可能性があり、依存関係の競合やランタイム エラーが発生する可能性があります。
ビルドエラー: ローカル開発環境とは異なる Node.js バージョンを使用する CI/CD パイプラインは、ビルドエラーを引き起こし、開発とリリースのプロセスに遅延を引き起こす可能性があります。
すべての環境で同じバージョンの Node.jsが使用されるようにすることで、これらの互換性の問題を軽減し、よりスムーズな開発およびデプロイ プロセスを確保できます。