Dev News Daily ENDE

NestJS 12.1.3 repariert SSE und verwirft request-scoped globale Enhancer nicht mehr

NestJS hat am 12. Oktober v12.1.3 veröffentlicht, ein Patch-Release, das ausschließlich aus Fehlerbehebungen in core, microservices und platform-express besteht. Einige davon ändern Verhalten, auf das sich Anwendungen unbemerkt verlassen haben könnten.

Globale Enhancer. Zwei Korrekturen betreffen global registrierte Guards, Interceptors, Pipes und Filter. Die eine verhindert, dass Nest request-scoped globale Enhancer stillschweigend verwirft; die andere lässt einen request-scoped globalen Klassen-Enhancer stattdessen beim Start scheitern. Eine dritte sorgt dafür, dass transiente globale Enhancer in Core und Microservices auf Controllern laufen. Wer einen solchen Enhancer registriert hatte und keine Wirkung sah, sieht ihn jetzt vielleicht laufen – oder die Anwendung startet erst, wenn die Registrierung korrigiert ist.

Server-Sent Events. Die größte Gruppe von Korrekturen betrifft SSE. Nest sendet jetzt Status und Header, die ein Handler auf SSE-Antworten setzt, schreibt Header auch bei leeren Streams, sendet den Expires-Header, schließt den SSE-Lebenszyklus bei frühem Verbindungsabbruch ab, beendet Streams, deren Eventdaten sich nicht serialisieren lassen, und verändert beim Vergeben einer Event-ID nicht mehr das Nachrichtenobjekt.

NestJS 12.1.3 repariert SSE und verwirft request-scoped globale Enhancer nicht mehr
NestJS 12.1.3 repariert SSE und verwirft request-scoped globale Enhancer nicht mehr — Dev News Daily

Start und Herunterfahren. Gepufferte Logs werden bei fehlgeschlagener Initialisierung ausgegeben, der Grund eines gescheiterten Starts geht also nicht mehr verloren. Nach einem fehlgeschlagenen Init läuft die Shutdown-Sequenz, und ein Shutdown-Signal, das während eines laufenden close() eintrifft, wird beachtet.

Routing und Middleware. Korrigiert wurden URI-versionierte Ausnahmen für den Not-found-Handler, die Normalisierung von Schrägstrichen beim Zuordnen von Controllern zu Middleware, globale Präfix-Ausnahmen bei überlappenden Versionen sowie eine GET-Middleware-Ausnahme, die jetzt auch HEAD-Anfragen abdeckt. Im Express-Adapter läuft Wildcard-Middleware auf dem nackten globalen Präfixpfad, ein asynchroner Request-Hook wird bis zum Abschluss abgesichert, und die Quelle eines StreamableFile wird beim Verbindungsabbruch des Clients zerstört.

Was zu prüfen ist. Das Release ist ein direkter Patch, doch zwei Korrekturen sind bewusst lauter als das alte Verhalten: Anwendungen mit request-scoped globalen Enhancern sollten einmal gegen 12.1.3 starten, bevor sie ausrollen, und Dienste mit SSE sollten frühe Abbrüche und leere Streams erneut testen.

Quelle: NestJS, Release Notes zu v12.1.3 — https://github.com/nestjs/nest/releases/tag/v12.1.3