← 一覧へ戻る
backend 重要度 4/5 2024/10/16 10:00:00

Node.js 23.0.0が正式リリース、requireでのESM読み込みがデフォルトで有効化

Node.js 23.0.0が正式リリース、requireでのESM読み込みがデフォルトで有効化

OpenJS Foundationは、JavaScriptランタイムの最新メジャーバージョンとなるNode.js 23.0.0を正式にリリースしました。本バージョンにおける最大の変更点は、これまで実験的機能として提供されていた「require()によるECMAScript Modules (ESM) の同期的な読み込み」が、コマンドラインフラグなしでデフォルトで有効化されたことです。これにより、CommonJSで記述された既存のコード資産からESMパッケージを呼び出す際の障壁が大幅に解消され、モジュールの移行期における相互運用性が向上します。

技術的な詳細として、Node.js 23はトップレベルのawaitを含まないESMファイルをrequireで読み込む際に、自動的に同期的な処理として実行します。また、内蔵のテストランナーであるnode:testが安定版へと昇格し、外部ライブラリに依存せず標準機能のみで高度なテストスイートを構築できるようになりました。一方で、長期的なメンテナンスコスト削減を目的として、32ビットWindows環境のサポートが本バージョンをもって正式に終了しています。開発者は環境のアップグレードを検討する必要があります。

実務への影響として、ライブラリ作者はCommonJSとESMの両対応(デュアルパッケージ)を維持する労力が軽減される一方、実行環境がNode.js 23未満の場合に備えた後方互換性の考慮は引き続き重要です。また、LTS(長期サポート)バージョンではないため、本番環境への導入にあたっては最新機能を必要とするか、あるいは次期LTSであるNode.js 22を選択するかを慎重に判断すべきです。Windows環境のサーバーやビルドマシンを利用している組織は、アーキテクチャの確認が急務となります。

フェレット記者の用語メモ

esm

ESM(ECMAScript Modules)はJavaScriptの標準モジュールシステムで、`import`/`export`構文を使うよ。CommonJSの`require`/`module.exports`と違って、静的解析が可能でツリーシェイキングなどの最適化がしやすいのが特徴。Node.js環境でESMを使う場合、パッケージの`type`フィールド設定やファイル拡張子(`.mjs`)の扱いで混乱しやすく、特に既存のCommonJSベースのコードと混在させると、モジュールの解決順序やスコープの違いでエラーが出やすいのが落とし穴だね。

比較: CommonJS

出典: Node.js Official Blog

要点を短く整理して掲載しています。詳細は出典を確認してください。

朝の要約メール待機リスト

毎朝7時に「今日の3本」をメールで受け取る(先行導入)。

関連記事