Website-Suche

typescript - AWS Lambda kryptischer Node.js-Fehler: Unbekannter Anwendungsfehler aufgetreten


Ich habe kürzlich meine Lambda-Node.js-Laufzeit von 8.x auf 12.x aktualisiert. Ich habe viele Abhängigkeiten aktualisiert und das Bundling mit Webpack sowie den Bereitstellungsprozess optimiert. ABER, ich begann sporadische Fehler in Cloudwatch mit einer kryptischen Nachricht "Unbekannter Anwendungsfehler ist aufgetreten" zu bemerken, ohne Stacktrace oder andere Protokolle, die mir Hinweise auf die Eingabe der Funktion geben könnten. Es gibt keine Möglichkeit für mich, diesen Code zu debuggen, und es scheint ein nativer AWS-Fehler zu sein, der die Funktion aus irgendeinem Grund nicht einmal aufrufen kann, sonst wäre ein JS-Stacktrace im Protokoll angehängt gewesen...

Ich fange an zu denken, dass es ein Webpack-Problem gibt, aber ich habe sogar den Minimierungsprozess deaktiviert, also habe ich keine Ahnung, wo ich nachsehen soll.

Mein Code ist zu 100 % in TypeScript geschrieben und wird mit Webpack & Babel kompiliert. Sollte ich versuchen, Webpack aus dem Build-Prozess zu entfernen und einfach die Ausgabe des TypeScript-Compilers zusammen mit dem normalen node_modules-Ordner zu zippen, ganz ohne Bündelung?

Kann mir bitte jemand helfen? Diese Funktion ist in Produktion!

BEARBEITEN: Ich sehe eine Menge Warnungen wie DeprecationWarning: Buffer() ist aufgrund von Sicherheits- und Benutzerfreundlichkeitsproblemen veraltet. Bitte verwenden Sie stattdessen die Methoden Buffer.alloc(), Buffer.allocUnsafe() oder Buffer.from()., und ich bin mir dessen bewusst, aber es sollte nicht die Ursache dieses kryptischen Fehlers sein.

Antwort #1

Ich hatte kürzlich diesen Fehler, aber mein Fehler trat bei jeder zweiten Anfrage auf. Bei der ersten Anfrage erhalte ich eine gute Antwort, bei der zweiten (gleichen) Anfrage erhalte ich den Fehler "Unbekannter Anwendungsfehler ist aufgetreten".

Ich habe das NodeJS mysql2-Modul verwendet und die Poolverbindung nach jeder Anfrage nicht richtig geschlossen, was die zweite Anfrage zum Scheitern brachte, dann setzt NodeJS zurück und die folgende Anfrage funktioniert wieder.

Verwandte Artikel