Node.js 22 のリリースノート


Red Hat build of Node.js 22

Node.js 22 LTS 用

Red Hat Customer Content Services

概要

このリリースノートには、Node.js 22 LTS に関連する重要な情報が記載されています。

はじめに

リリース日: 2025 年 2 月 24 日

第1章 必要なインフラストラクチャーコンポーネントのバージョン

Red Hat build of Node.js を使用する場合は、次のインフラストラクチャーコンポーネントが必要です。サポート対象として明示的に指定されているコンポーネントを除き、Red Hat はこれらのコンポーネントのサポートを提供していません。

Expand
コンポーネント名バージョン

Nodeshift

2.1.1

npm 10

10.9.0

OpenShift Container Platform (OCP)[a]

3.11、4.5

git

2.0 以降

oc コマンドラインツール

3.11 以降[b]

[a] OCP は Red Hat によってサポートされます
[b] CLI ツール oc のバージョンは、使用している OCP のバージョンに対応する必要があります。

第2章 機能

このセクションには、Red Hat build of Node.js 22 リリースにおける機能の変更に関する情報が記載されています。

2.1. 新機能および変更された機能

Node.js 22 LTS には、Red Hat build of Node.js がサポートする次の新機能と機能拡張があります。

Node.js 22 LTS の変更点の詳細は、アップストリームコミュニティーの リリースノートドキュメント を参照してください。

2.1.1. v12.4 への V8 JavaScript エンジンのアップグレード

このリリースには、Chromium 124 の一部である v12.4 への V8 JavaScript エンジンのアップグレードが含まれています。

アップグレードされた V8 JavaScript エンジンには、以下の新機能および機能拡張が含まれています。

V8 JavaScript エンジンで利用可能な変更の詳細は、V8 ブログ を参照してください。

2.1.2. Node.js ストリームのデフォルトハイウォーターマークの増加

Red Hat build of Node.js 22 では、Node.js ストリームのデフォルトのハイウォーターマークが 16 KB から 65 KB に増加しました。この機能拡張により、Node.js ストリームの全体的なパフォーマンスが向上します。

注記

この機能拡張により、メモリー使用量もわずかに増加します。環境がメモリーの影響を受ける場合は、setDefaultHighWaterMark() を使用してデフォルト値を変更できます。

詳細は、Node.js の new stream.Writable および new stream.Readable ドキュメントを参照してください。

2.1.3. AbortSignal 作成のパフォーマンスの向上

Red Hat build of Node.js 22 では、AbortSignal インスタンスの作成が効率化します。この機能拡張により、fetch() API とテストランナーモジュールのパフォーマンスが大幅に向上します。

詳細は、Node.js の AbortSignal ドキュメントを参照してください。

2.1.4. 同期ファイルシステム API のパフォーマンスの向上

Red Hat build of Node.js 22 では、UTF-8 でエンコードされた文字列データ用の非常に効率的な高速パスの追加により、writeFileSync() メソッドが強化されています。このリリースでは、appendFileSync() メソッドを最適化するために、改良された writeFileSync() 機能も使用されます。この機能拡張は、特に文字列データ操作の効率を最大化することに重点を置いています。

詳細は、Node.js の fs.writeFileSync および fs.appendFileSync ドキュメントを参照してください。

2.1.5. 不適切な IPV6 設定の処理の改善

Node.js 17 リリース以降、Node.js は IPv6 アドレスよりも IPv4 アドレスを優先しなくなりました。Node.js は、ドメイン名検索 (DNS) エントリーに基づいて返される順序に従います。この動作は通常、適切に設定されたホストには影響しません。しかし、IPv6 スタックが部分的にまたは誤って設定されているホストでは、この動作により問題が発生する可能性があります。最近のリリースでは、Happy Eyeballs アルゴリズムの実装を組み込み、エッジケースを修正することで、誤って設定されている IPv6 スタックのユーザーエクスペリエンスを向上させることを目指しています。

Red Hat build of Node.js 22 には、net.createConnection フロー内の接続試行に関する次の 3 つの新しいイベントが追加されています。

  • 新しい接続試行が確立されると、connectionAttempt イベントが発生します。Happy Eyeballs を使用すると、このイベントが複数回発生する場合があります。
  • 接続試行が失敗すると、connectionAttemptFailed イベントが発生します。Happy Eyeballs を使用すると、このイベントが複数回発生する場合があります。
  • 接続試行が指定タイムアウト期間を超えると、connectionAttemptTimeout イベントが発生します。Happy Eyeballs を使用する場合、最後の試行ではこのイベントは発生しません。Happy Eyeballs を使用していない場合、このイベントは発生しません。

さらに、Red Hat build of Node.js 22 では、前回の試行が失敗し、ユーザーがすでに接続を破棄した後に、新しい接続の試行が開始されることがある問題が解決されています。この問題により、以前のリリースではアサーションが失敗していました。

注記

問題が発生した場合は、以前のリリースと同様に、--dns-result-order=ipv4first CLI オプションを使用して以前の動作に戻すことができます。--no-network-family-autoselection オプションを使用して、Happy Eyeballs を無効にすることもできます。

詳細は、Node.js の net.Socket ドキュメントを参照してください。

2.1.6. Web Streams の deflate-raw 圧縮形式のサポート

Red Hat build of Node.js 22 では、CompressionStream および DecompressionSteam コンストラクターで deflate-raw パラメーターのサポートが追加されました。deflate-raw パラメーターは、ヘッダーと末尾のチェックサムなしで DEFLATE アルゴリズムを使用してストリームを圧縮または展開します。この機能拡張により、最新のブラウザーがサポートする Web ストリーム圧縮との一貫性が確保されます。

詳細は、Node.js の CompressionStream および DecompressionStream ドキュメントを参照してください。

2.1.7. ウォッチモードの完全なサポート

Red Hat build of Node.js 22 は、実稼働環境で使用できる安定した機能としてウォッチモードを提供します。以前のリリースでは、ウォッチモードは実験的な機能としてのみ提供されていました。

node --watch CLI オプションを使用すると、Node.js アプリケーションをウォッチモードで実行できます。アプリケーションをウォッチモードで実行すると、インポートしたファイルを変更したときにプロセスが再起動されます。これにより、内部ループの開発サイクルが高速化するという主な利点が得られます。

ウォッチモードには次のオプションがあります。

  • --watch オプションは、Node.js をウォッチモードで起動します。
  • --watch-path オプションは、Node.js をウォッチモードで起動し、監視するパスを指定します。
  • --watch-preserve-output オプションは、ウォッチモードによってプロセスが再起動されるときのコンソールのクリアを無効にします。

    注記

    このオプションを使用するには、--watch または --watch-path オプションも使用する必要があります。

詳細は、Node.js の --watch ドキュメントを参照してください。

2.2. 非推奨の機能

次の機能は、Red Hat build of Node.js 22 リリースでは非推奨です。

注記

このリリースの非推奨または削除された機能の詳細は、nodejs.org の Web サイト を参照してください。

2.2.1. インポートアサーションのサポート

このリリースでは、assert キーワードを使用するインポートアサーションのサポートが削除されました。インポートアサーションは、with キーワードを使用するインポート属性に置き換えられました。Red Hat build of Node.js 22 では、assert キーワードが出現する場合は必ず with キーワードに置き換えてください。

たとえば、次のようなステートメントがあるとします。この場合、<module_name> はインポートするモジュールの名前を表します。

import "<module_name>" assert { ... }
Copy to Clipboard Toggle word wrap

前の例を次のステートメントに置き換えます。

import "<module_name>" with { ... }
Copy to Clipboard Toggle word wrap

詳細は、Node.js の Import attributes ドキュメントを参照してください。

2.2.2. 一部の util API の実行時非推奨表示

このリリースには、次の util API の実行時非推奨表示が含まれています。

  • util._extend
  • util.isArray
  • util.isBoolean
  • util.isBuffer
  • util.isDate
  • util.isError
  • util.isFunction
  • util.isNull
  • util.isNullOrUndefined
  • util.isNumber
  • util.isObject
  • util.isPrimitive
  • util.isRegExp
  • util.isString
  • util.isSymbol
  • util.isUndefined
  • util.log
注記

-throw-deprecation CLI フラグを使用してアプリケーションを実行すると、非推奨の API を確認できます。このフラグにより、実行時に非推奨と表示される API をコードで使用している場合に実行時エラーが生成されます。

詳細は、Node.js の Utilities: Deprecated APIs ドキュメントを参照してください。

2.3. テクノロジープレビュー機能

以下の機能は、Node.js 22 LTS リリースのテクノロジープレビュー機能として利用できます。

2.3.1. ブラウザー互換の WebSocket クライアントのサポート

Red Hat build of Node.js 22 には、WebSocket API の実験的なブラウザー互換実装が組み込まれています。この機能拡張により、外部依存関係のない WebSocket クライアントが提供されます。

この機能はデフォルトで有効化されています。この機能を無効にする場合は、--no-experimental-websocket CLI フラグを使用できます。

2.3.2. ESM の互換性に関する機能拡張

Red Hat build of Node.js 22 には、ECMAScript モジュール (ESM) の互換性を確保するための次の実験的な機能拡張が含まれています。

2.3.2.1. プロパティー import.meta.dirname および import.meta.filename

このリリースには、ローカルファイルシステムから読み込まれる import.meta.dirname および import.meta.filename プロパティーの実験的なサポートが含まれています。file: ベースの ESM の場合、これらのプロパティーは CommonJS の __filename および __dirname グローバル変数と同等です。import.meta.filename プロパティーは、URL ではなくファイルパス形式でモジュールへの完全な絶対パスを提供します。import.meta.dirname プロパティーは、モジュールが含まれるフォルダーへの完全な絶対パスを提供します。

注記

これらのプロパティーは、data: または https: URL からロードされるモジュールなど、file: ベース以外の ESM では使用できません。

詳細は、Node.js の import.meta ドキュメントを参照してください。

2.3.2.2. ESM 構文の自動検出と実行のサポート

このリリースには、JavaScript で ESM 構文が検出された場合に ECMAScript (ES) モジュールを自動的に実行するための実験的なサポートが含まれています。最も近い package.json ファイルに type フィールドがない、あいまいな .js ファイルまたは拡張子のないファイルの場合、Node.js はファイルを解析して ESM 構文をチェックします。ESM 構文が検出されると、Node.js はファイルを ES モジュールとして実行します。構文が検出されず、ファイルの種類が不明な場合、Node.js はファイルを CommonJS モジュールとして実行します。この機能の典型的なユースケースは、近くに package.json ファイルがない拡張子のないスクリプトで、ES モジュール構文を使用可能にすることです。

この機能はデフォルトで有効化されています。この機能を無効にする場合は、--no-experimental-detect-module CLI フラグを使用できます。

注記

この自動検出機能により起動時間が長くなります。ESM 構文のチェックによるオーバーヘッドを回避するには、package.json ファイルに type フィールドを追加するか、.mjs.cjs などの明示的なファイル拡張子を使用することを検討してください。

2.3.2.3. 同期 ESM グラフの要求のサポート

このリリースでは、同期 ESM グラフで require() 関数を使用するための実験的なサポートが追加されました。この機能は --experimental-require-module CLI フラグを使用して有効にできます。

モジュールをロードするには、モジュールが次の要件を満たしている必要があります。

  • 最も近い package.json ファイルの type:module フィールドまたは .mjs 拡張子を使用して、ES モジュールとして明示的にマークされている。
  • 完全に同期しており、トップレベルの await 式が含まれていない。

require() 関数は、要求されたモジュールを ES モジュールとしてロードし、モジュール名前空間オブジェクトを返します。この動作は動的 import() 機能に似ていますが、require() 関数は同期的に実行され、名前空間オブジェクトを直接返します。

詳細は、Node.js の Loading ECMAScript modules using require() ドキュメントを参照してください。

2.3.3. TypeScript のサポート

Red Hat build of Node.js 22 では、TypeScript のサポートに次の実験的な機能が導入されています。

2.3.3.1. 型の削除を使用した TypeScript のサポート

このリリースには、.ts ファイルから型アノテーションを削除する実験的な機能が含まれています。これにより、TypeScript 固有の構文を変換せずにこの種類のファイルを実行できるようになります。この機能は --experimental-strip-types CLI フラグを使用して有効にできます。

この機能には次の制限があります。

  • インライン型アノテーションだけをサポートしています。
  • 列挙型や名前空間などの機能はサポートしていません。
  • import および require ステートメントで明示的なファイル拡張子が必要です。
  • 実行時エラーを回避するために、型のインポートに type キーワードを強制的に使用します。
  • node_modules の TypeScript はデフォルトで無効になっています。

詳細は、Node.js の Type stripping ドキュメントを参照してください。

2.3.3.2. 型の変換のサポート

このリリースには、TypeScript のみの構文を JavaScript コードに変換できる実験的な機能が含まれています。この機能により、Red Hat build of Node.js で Enumnamespace などの TypeScript 構文をサポートできるようになります。この機能は --experimental-transform-types CLI フラグを使用して有効にできます。

詳細は、Node.js の Modules: TypeScript ドキュメントを参照してください。

2.3.4. 実験的な Web Storage API

Red Hat build of Node.js 22 では、データストレージに SQLite を使用する Web Storage API の実験的な実装が導入されています。この機能は --experimental-webstorage CLI フラグを使用して有効にできます。

詳細は、Node.js の --experimental-webstorage ドキュメントを参照してください。

2.3.5. 実験的な sqlite API

Red Hat build of Node.js 22 では、組み込みの node:sqlite モジュールの実験的な機能が導入されています。この機能は --experimental-sqlite CLI フラグを使用して有効にできます。

次の例は、node:sqlite モジュールを使用してメモリー内データベースを開き、データベースにデータを書き込み、データを読み取る方法を示しています。

import { DatabaseSync } from 'node:sqlite';
const database = new DatabaseSync(':memory:');

// Execute SQL statements from strings.
database.exec(`
  CREATE TABLE data(
    key INTEGER PRIMARY KEY,
    value TEXT
  ) STRICT
`);
// Create a prepared statement to insert data into the database.
const insert = database.prepare('INSERT INTO data (key, value) VALUES (?, ?)');
// Execute the prepared statement with bound values.
insert.run(1, 'hello');
insert.run(2, 'world');
// Create a prepared statement to read data from the database.
const query = database.prepare('SELECT * FROM data ORDER BY key');
// Execute the prepared statement and log the result set.
console.log(query.all());
// Prints: [ { key: 1, value: 'hello' }, { key: 2, value: 'world' } ]
Copy to Clipboard Toggle word wrap

詳細は、Node.js の SQLite ドキュメントを参照してください。

2.3.6. Navigator API の部分的なサポート

Red Hat build of Node.js 22 には、実験的な Navigator グローバルオブジェクトが含まれています。Navigator オブジェクトは、Navigator API の部分的な実装です。この API は、ユーザーエージェントのアイデンティティーと状態を表すために使用されます。

詳細は、Node.js の Navigator ドキュメントを参照してください。

2.3.7. テキスト書式指定 API

Red Hat build of Node.js 22 には、実験的な util.styleText(format, text) 関数が含まれています。この関数は、指定されたフォーマットおよびテキスト文字列パラメーターに基づいて、書式設定されたテキストを返します。この新しい API を使用すると、util.inspect.colors に基づいて、さまざまな色 (redbluegreen など) や強調スタイル (italicboldunderline など) でテキストを書式設定できます。

次の例では、テキスト Hello World を緑のフォントで書式設定します。

const { styleText } = require('node:util');
const myMessage = styleText('green', 'Hello World');
console.log(myMessage);
Copy to Clipboard Toggle word wrap

次の例では、テキスト Error! を太字の赤いフォントで書式設定します。

const { styleText } = require('node:util');
const myMessage = styleText(['red', 'bold'], 'Error!');
console.log(myMessage);
Copy to Clipboard Toggle word wrap

詳細は、Node.js の util.styleText ドキュメントを参照してください。

2.3.8. 環境変数のロードと解析のための API

Red Hat build of Node.js 22 には、ファイル内で環境変数を定義するための既存の実験的なサポートに加えて、環境変数をプログラムでロードして解析するための次の実験的な API が含まれています。

  • process.loadEnvFile (path) 関数は、指定パスから .env ファイルを読み込みます。

    たとえば、次のコードは、test サブディレクトリーから development.env ファイルをロードします。

    const { loadEnvFile } = require('node:process');
    loadEnvFile('./test/development.env');
    Copy to Clipboard Toggle word wrap

    パスを指定しない場合 (たとえば、loadEnvFile())、この関数はカレントディレクトリーにある .env ファイルをロードします。

    詳細は、Node.js の process.loadEnvFile ドキュメントを参照してください。

  • util.parseEnv(content) 関数は、attribute=value ペア形式の環境変数の割り当てを含む指定文字列を解析します。

    以下に例を示します。

    const { parseEnv } = require('node:util');
    parseEnv('HELLO=world');
    Copy to Clipboard Toggle word wrap

    詳細は、Node.js の util.parseEnv ドキュメントを参照してください。

2.3.9. ディスクへのコードキャッシュ保存

Red Hat build of Node.js 22 では、ディスク上にコードをキャッシュする別の方法として、次の 2 つの実験的な機能が導入されています。

2.3.9.1. NODE_COMPILE_CACHE 環境変数

このリリースには、ディスクへのコードキャッシュ自動保存を有効にする実験的な NODE_COMPILE_CACHE 環境変数が含まれています。この機能により、Node.js が CommonJS または ECMAScript (ES) モジュールをコンパイルするときに、指定ディレクトリーに保存されているディスク上の V8 コードキャッシュ を使用できるようになります。この機能は、ソフトウェアのコンパイルプロセスを迅速化するのに役立ちます。この機能を有効にするには、NODE_COMPILE_CACHE 環境変数を使用してキャッシュディレクトリーへのパスを指定します (例: NODE_COMPILE_CACHE=/path/to/cache/dir)。

この機能により、モジュールグラフの最初のロード時間が長くなる可能性があります。ただし、モジュールの内容が変更されなければ、この機能により、同じモジュールグラフを次回以降ロードする際にかかる時間が大幅に短縮されます。

生成されたキャッシュをクリアする場合は、NODE_COMPILE_CACHE 環境変数で指定したキャッシュディレクトリーを削除します。Red Hat build of Node.js は、次回このディレクトリーが使用されるときに、指定されたディレクトリーを自動的に再作成します。

注記

異なるバージョンの Red Hat build of Node.js では、同じコンパイルキャッシュを使用できません。製品バージョンごとに独自のキャッシュが生成されます。複数の異なる製品バージョンで同じディレクトリーが使用されている場合、各製品バージョンによって生成されたキャッシュが、同じディレクトリー内に個別に保存されます。

現在、この機能を V8 JavaScript のコードカバレッジで使用する場合、コードキャッシュからデシリアライズされた関数で、V8 が収集するカバレッジの精度が低くなる可能性があります。このような場合は、正確なカバレッジを生成するためにテストを実行するときに、ディスクへのコードキャッシュ自動保存を無効にすることを検討してください。

2.3.9.2. module.enableCompileCache() API

このリリースには、実験的な module.enableCompileCache() API が含まれています。これは、この API が呼び出された後にロードされるモジュールすべてのディスクへのコードキャッシュ保存を有効にするためのものです。この API は、ディスク上にコードをキャッシュする別の方法であり、NODE_COMPILE_CACHE 環境変数と比較して次の利点があります。

  • module.enableCompileCache() API は、ツールやライブラリーの作成者が独自のコードのキャッシュを有効にするために使用できます。NODE_COMPILE_CACHE 環境変数はエンドユーザーのみが使用できます。
  • module.enableCompileCache() API は、v8-compile-cache および v8-compile-cache-lib パッケージに代わる組み込みの代替機能です。より優れたパフォーマンスを提供し、ECMAScript モジュール (ESM) をサポートしています。

詳細は、Node.js の module.EnableCompileCache ドキュメントを参照してください。

2.4. サポートされているアーキテクチャー

Node.js ビルダーイメージおよび RPM パッケージが利用可能で、以下の CPU アーキテクチャーとの使用がサポートされます。

  • AMD x86_64
  • ARM64
  • OpenShift 環境の IBM Z (s390x)
  • OpenShift 環境の IBM Power System (ppc64le)

第3章 リリースコンポーネント

第4章 修正された問題

このリリースには、Node.js 22 LTS のコミュニティーリリースでの問題修正がすべて組み込まれています。

第5章 既知の問題

本リリースに影響する既知の問題はありません。

第6章 必要なインフラストラクチャーコンポーネントに影響する既知の問題

本リリースで必要なインフラストラクチャーコンポーネントに影響を与える既知の問題はありません。

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る