Node.js 22 の変更点について
Discussion
Support require()ing synchronous ESM graphs
This release adds require() support for synchronous ESM graphs under the flag --experimental-require-module.If --experimental-require-module is enabled, and the ECMAScript module being loaded by require() meets the following requirements:
Explicitly marked as an ES module with a "type": "module" field in the closest package.json or a .mjs extension.
Fully synchronous (contains no top-level await).
require() will load the requested module as an ES Module, and return the module name space object. In this case it is similar to dynamic import() but is run synchronously and returns the name space object directly. We intend to eventually enable require(esm) by default in the future, without the flag.
この部分の解釈について意見をいただきたいです。
私の解釈
できるようになること
-
require(esm)
という読み込みが可能になる- 現在はフラグを立てる必要があるが、将来的にはデフォルトで使用できるようになる
この変更による影響
- 今までは、非同期的な読み込みはESM CJSともに
import
で読み込むことができたが、同期的な読み込みはCJSがrequire()
、ESMがawait import
を使用していた。今回の変更により、同期的な読み込みはrequire()
に統一することができる- ブラウザでは依然として
import
のみをサポートするため、どこでもrequire()
が使用できるわけではない
- ブラウザでは依然として