JavaScript-Runtime Node.js 23: Standardmäßige ES-Modulunterstützung aktiviert

Die aktuelle Major-Version der JavaScript-Runtime schraubt an der Performance und hat native ES-Modulunterstützung im Gepäck.

In Pocket speichern vorlesen Druckansicht 3 Kommentare lesen
Javascript Schriftzug auf einem Monitor

(Bild: Trismegist san/Shutterstock.com)

Lesezeit: 2 Min.
Inhaltsverzeichnis

Die quelloffene JavaScript-Runtime Node.js hat Version 23 erreicht. Zu den wichtigsten Neuerungen gehören die standardmäßige Aktivierung von require(esm) für Node.js-Anwendungen, die entfernte Unterstützung für 32-Bit-Windows-Systeme, die Stabilisierung des Kommandos node --run sowie ein überarbeiteter Test-Runner, einschließlich der Unterstützung von Glob-Mustern für Coverage-Dateien.

In Node.js 23 ist die Unterstützung für require(esm) standardmäßig aktiviert. Diese Funktion, die zuvor nur mit dem Kommandozeilen-Flag --experimental-require-module in den Versionen 20.x und 22.x verfügbar war, ermöglicht das Laden nativer ES-Module mit require(). Sie gilt zum jetzigen Zeitpunkt noch als experimentell. Das Entwicklerteam bittet um Benutzer-Feedback, um vor der Finalisierung letzte Anpassungen vornehmen zu können.

Beim ersten Auftreten eines nativen ES-Moduls in require() wird ein experimenteller Warnhinweis ausgegeben. Bei Problemen oder Rückschritten können Nutzerinnen und Nutzer dies im Node.js-Issue-Tracker melden. Die Funktion lässt sich vorübergehend durch --no-experimental-require-module deaktivieren. Die vollständige Implementierung ohne Flag soll nach der Erhebung von Node.js 22 zur LTS-Version voraussichtlich in einer späteren Minor-Version erfolgen.

Mit aktiviertem require(esm) löst Node.js nicht mehr den Fehler ERR_REQUIRE_ESM aus, wenn require() zum Laden eines ES-Moduls verwendet wird. Es besteht jedoch die Möglichkeit, dass der Fehler ERR_REQUIRE_ASYNC_MODULE auftritt, wenn das Modul oder seine Abhängigkeiten ein Top-Level-Await enthalten. Erfolgreich geladene ES-Module geben ein Namespace-Objekt zurück, das sich mit util.isModuleNamespaceObject() überprüfen lässt.

Nutzerinnen und Nutzer können mit process.features.require_module prüfen, ob die Funktion in der aktuellen Node.js-Instanz aktiviert ist. Für Pakete erlaubt die "module-sync"-Exports-Bedingung sowohl require() als auch import, dasselbe native ES-Modul zu laden. Weitere Informationen finden sich in der Dokumentation.

JavaScript-Konferenz enterJS

(Bild: WD Ashari / Shutterstock.com)

Am 7. und 8. Mai findet die Enterprise-JavaScript-Konferenz enterJS 2025 in Mannheim statt. Die Veranstalter dpunkt.verlag und iX suchen dafür nach Vorschlägen für Vorträge und Workshops. Entwicklerinnen und Entwickler können bis zum 8. November 2024 am Call for Proposals teilnehmen.

Blind-Bird-Tickets sind bereits erhältlich – für ein vergünstigtes Ticket bis zum Online-Gang des Programms.

Node.js 23 soll Node.js 22 als aktuelle Release-Linie ersetzen, sobald Node.js 22 im weiteren Verlauf des Oktobers in den Langzeit-Support (LTS) übergeht. Laut dem Veröffentlichungsplan wird Node.js 23 für die nächsten sechs Monate, bis April 2025, als sogenannte Current-Version geführt.

Nähere Details zu Node.js 23 finden sich in den Release Notes.

(mdo)