Heroku の Node.js サポートリファレンス
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2024年12月04日(水)
Table of Contents
Heroku は、一般的なフレームワークで構築されたものも含め、Node.js アプリケーションをサポートしています。このドキュメントには、バージョンのサポート情報が記載されています。
アプリケーションのデプロイ方法に関する詳しい説明は、「Heroku スターターガイド (Node.js)」または「Heroku Fir スターターガイド (Node.js)」を参照してください。Heroku が Node.js アプリケーションを認識して実行する一般的な動作に関する情報については、「Heroku での Node.js の動作」を参照してください。
Node.js ランタイム
サポートされている Node.js バージョン
クラシック buildpack または Cloud Native Buildpack を使用するアプリの場合、Node.js バージョンのサポートは Node.js サポートポリシー に従います。このサポートには、Node.js リリーススケジュール に従って次のバージョンが含まれています。
リリース | ステータス | サポート終了 |
---|---|---|
23.x |
現在 | 2025 年 6 月 1 日 |
22.x |
アクティブ LTS | 2027 年 4 月 30 日 |
20.x |
メンテナンス LTS | 2026 年 4 月 30 日 |
18.x |
メンテナンス LTS | 2025 年 4 月 30 日 |
サポートされているリリースの新しいバージョンは、通常 Node.js チームによる公式リリースから 24 ~ 48 時間以内に Heroku で使用できるようになります。Node.js の古いバージョンはいつでもプラットフォームにインストールできますが、サポートされているバージョンにアプリケーションを段階的にアップグレードする場合にのみ使用します。
推奨:
- 本番環境ではアクティブ LTS またはメンテナンス LTS リリースのみを使用する
- サポートされている Node.js バージョンの最新のパッチリリースを常に実行する
- Node.js リリースのサポート終了 (EOL) 前にアップグレードする
Node.js バージョンの指定
開発やテストで使用しているランタイムに一致する Node.js バージョンを常に指定します。ローカルでバージョンを検索するには、node --version
を実行します。
Heroku で使用する Node.js のバージョンを指定するには、package.json
の engines セクションを使用します。
{
"name": "example-app",
"engines": {
"node": "22.x"
}
}
Node バージョンが engines セクションで指定されていない場合は、Node.js 22.x
が自動的に使用されます。
また、マイナー範囲 (22.11
など) または正確なバージョン (22.11.0
など) を指定することもできます。
Node ではサポートされているすべてのメジャーバージョンで定期的なセキュリティリリースが行われるため、
22.x
のようにメジャー範囲を指定してセキュリティ更新を自動的に取得することをお勧めします。
パッケージマネージャーの指定
Node.js アプリケーションは npm、pnpm、Yarn を使用してビルドできます。各パッケージマネージャーを設定する手順については、以下を参照してください。
アプリケーションで使用できるパッケージマネージャーは 1 つのみです。
npm を使用する場合
アプリケーションのルートに package.json
と共に package-lock.json
ファイルがある場合、Heroku では npm をダウンロードしてインストールし、これを使用して依存関係をインストールし、アプリケーションをビルドします。
Node.js は npm にバンドルされているため、ほとんどの場合 npm バージョンを指定する必要はありませんが、指定することをお勧めします。ただし、異なるバージョンの npm をローカルで意図的に使用する場合は、Heroku で同じバージョンを指定します。
npm バージョンポリシー
サポートされている Node.js バージョンにバンドルされている npm のリリースラインバージョンは、Heroku アプリケーションのビルドに使用できます。古いバージョンの npm は引き続き動作する可能性がありますが、動作は保証されません。latest
バージョンの npm を使用することが 推奨されます。
リリース | バンドルされた npm バージョン |
---|---|
23.x |
10.x |
22.x |
10.x |
20.x |
10.x |
18.x |
10.x |
npm バージョンの指定
アプリケーションビルドの npm バージョンを指定するには、package.json
の engines.npm フィールドを使用します。
{
"name": "example-app",
"engines": {
"npm": "10.x"
}
}
pnpm を使用する場合
アプリケーションのルートに package.json
と共に pnpm-lock.yaml
ファイルがある場合、Heroku では pnpm をダウンロードしてインストールし、これを使用して依存関係をインストールし、アプリケーションをビルドします。pnpm のバージョンも指定する必要があります。
pnpm バージョンポリシー
サポートされている Node.js バージョンで実行する任意の pnpm バージョンは、Heroku アプリケーションのビルドに使用できます。古いバージョンの pnpm は引き続き動作する可能性がありますが、動作は保証されません。latest
バージョンの pnpm を使用することが 推奨されます。
pnpm バージョンの指定
アプリケーションのビルドで pnpm のバージョンを指定するには、次のいずれかの方法を使用します。
package.json
のpackageManager
フィールドを使用する。{ "name": "example-app", "packageManager": "pnpm@9.0.5" }
この方法では、pnpm ツールに推奨される Corepack を使用します。
package.json
で宣言するバージョンは正確である必要がありますが、Corepack の use コマンド (corepack use pnpm@9.x
など) を使用してバージョン範囲から設定できます。
package.json
のengines.pnpm
フィールドを使用する。{ "name": "example-app", "engines": { "pnpm": "9.0.5" } }
この方法では、
9.0
または9.x
などのバージョン範囲を使用できます。範囲は新しいリリースを最新の状態に保つのに役立ちますが、信頼性の高いビルドに関しては正確なバージョンほど安全ではありません。
pnpm を指定する engines.pnpm
メソッドは、現在 Cloud Native Buildpack を使用するアプリではサポートされていません。
Yarn を使用する場合
アプリケーションのルートに package.json
と共に yarn.lock
ファイルがある場合、Heroku では Yarn をダウンロードしてインストールし、これを使用して依存関係をインストールし、アプリケーションをビルドします。Yarn のバージョンも指定します。指定されていない場合はバージョン 1.22.x
がインストールされます。
Yarn バージョンポリシー
サポートされている Node.js バージョンで実行する 任意の Yarn バージョンは、Heroku アプリケーションのビルドに使用できます。古いバージョンの Yarn は引き続き動作する可能性がありますが、動作は保証されません。latest
バージョンの Yarn を使用することが推奨されます。
Yarn バージョンの指定
アプリケーションのビルドで Yarn のバージョンを指定するには、次のいずれかの方法を使用します。
package.json
のpackageManager
フィールドを使用する。{ "name": "example-app", "packageManager": "yarn@4.1.1" }
この方法では、Yarn ツールに推奨される Corepack を使用します。
package.json
で宣言するバージョンは正確である必要がありますが、Corepack の use コマンド (corepack use yarn@4.x
など) を使用してバージョン範囲から設定できます。
package.json
のengines.yarn
フィールドを使用する。{ "name": "example-app", "engines": { "yarn": "4.1.1" } }
この方法では、
4.1
または4.x
などのバージョン範囲を使用できます。範囲は新しいリリースを最新の状態に保つのに役立ちますが、 信頼性の高いビルドに関しては正確なバージョンほど安全ではありません。
動作
Heroku が Node.js アプリケーションを認識して実行する仕組みの詳細については、「Heroku での Node.js の動作」を参照してください。
その他の資料
Heroku Node.js buildpack はオープンソースです。buildpack の仕組みを技術的にさらに詳しく理解するには、github.com/heroku/heroku-buildpack-nodejs にあるクラシック buildpack のソースコードと、github.com/heroku/buildpacks-nodejs にある Cloud Native Buildpack を参照してください。