Problembehandlung bei Node.js Apps in Azure Functions

Von Bedeutung

Der Inhalt dieses Artikels ändert sich abhängig von dem Node.js-Programmiermodell, das Sie oben auf der Seite ausgewählt haben. Das v4-Modell ist allgemein verfügbar und bietet JavaScript- und TypeScript-Entwicklern eine flexiblere und intuitivere Erfahrung. Weitere Informationen zu den Unterschieden zwischen v3 und v4 finden Sie im Migrationsleitfaden.

Dieser Artikel enthält eine Anleitung zur Problembehandlung allgemeiner Szenarien in Node.js Funktions-Apps.

Die Registerkarte "Diagnose und Lösung von Problemen" im Azure-Portal ist eine nützliche Ressource, um mögliche Probleme im Zusammenhang mit Ihrer Anwendung zu überwachen und zu diagnostizieren. Es liefert auch potenzielle Lösungen für Ihre Probleme basierend auf der Diagnose. Weitere Informationen finden Sie unter Azure Funktions-App-Diagnose.

Eine weitere nützliche Ressource ist die Registerkarte "Protokolle" im Azure-Portal für Ihre Application Insights-Instanz, sodass Sie benutzerdefinierte KQL-Abfragen ausführen können. Die folgende Beispielabfrage zeigt, wie Fehler und Warnungen für Ihre App am letzten Tag angezeigt werden:

let myAppName = "<your app name>";
let startTime = ago(1d);
let endTime = now();
union traces,requests,exceptions
| where cloud_RoleName =~ myAppName
| where timestamp between (startTime .. endTime)
| where severityLevel > 2

Wenn diese Ressourcen Ihr Problem nicht gelöst haben, finden Sie in den folgenden Abschnitten Hinweise zu bestimmten Anwendungsproblemen:

Keine Funktionen gefunden

Wenn in Ihren Protokollen eine der folgenden Fehler angezeigt wird:

Es wurden keine HTTP-Trigger gefunden.

Keine Jobfunktionen gefunden. Versuchen Sie, Ihre Jobklassen und Methoden als öffentlich zu deklarieren. Wenn Sie Bindungserweiterungen (z. B. Azure Storage, ServiceBus, Timers usw.) verwenden, stellen Sie sicher, dass Sie in Ihrem Startcode die Registrierungsmethode für die Erweiterung(en) aufgerufen haben (z. B. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers() usw.).

Probieren Sie die folgenden Korrekturen aus:

  • Stellen Sie bei der lokalen Ausführung sicher, dass Sie Azure Functions Core Tools v4.0.5382 oder höher verwenden.
  • Beim Ausführen in Azure:
    • Stellen Sie sicher, dass Sie Azure Functions Runtime Version 4.25 oder höher verwenden.

    • Stellen Sie sicher, dass Sie Node.js v18 oder höher verwenden.

    • Legen Sie die App-Einstellung FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERROR auf true. Diese Einstellung wird für alle Modell-v4-Apps empfohlen und stellt sicher, dass alle Einstiegspunktfehler in Ihren Anwendungserkenntnisse-Protokollen sichtbar sind. Weitere Informationen finden Sie unter App-Einstellungsreferenz für Azure Functions.

    • Überprüfen Sie die Protokolle Ihrer Funktions-App auf Fehler beim Einstiegspunkt. Die folgende Beispielabfrage zeigt, wie Sie Fehler am Einstiegspunkt Ihrer App im vergangenen Tag anzeigen:

      let myAppName = "<your app name>";
      let startTime = ago(1d);
      let endTime = now();
      union traces,requests,exceptions
      | where cloud_RoleName =~ myAppName
      | where timestamp between (startTime .. endTime)
      | where severityLevel > 2
      | where message has "entry point"
      
  • Stellen Sie sicher, dass Ihre App über die erforderliche Ordnerstruktur mit einem host.json im Stammverzeichnis und einem Ordner für jede Funktion verfügt, die eine function.json Datei enthält.

Undici-Anforderung ist kein Konstruktor

Wenn der folgende Fehler in den Protokollen Ihrer Function App erscheint:

System.Private.CoreLib: Ausnahme beim Ausführen der Funktion: Functions.httpTrigger1. System.Private.CoreLib: Ergebnis: Ausnahmefehler: undici_1.Request ist kein Konstruktor

Stellen Sie sicher, dass Sie Node.js Version 22.x oder höher verwenden.

Fehler beim Erkennen der Azure Functions Laufzeit

Wenn der folgende Fehler in den Protokollen Ihrer Function App erscheint:

WARNUNG: Fehler beim Erkennen der Azure Functions Laufzeit. Wechseln des Pakets "@azure/Funktionen" zum Testmodus – nicht alle Features werden unterstützt.

Überprüfen Sie Ihre Datei package.json auf einen Verweis auf applicationinsights und stellen Sie sicher, dass die Version ^2.7.1 oder höher ist. Führen Sie nach dem Aktualisieren der Version npm install aus

HTTP-Streams funktionieren nicht

Wenn HTTP-Streaming nicht funktioniert:

  • Überprüfen Sie, ob @azure/functions die Paketversion 4.3.0 oder neuer ist.
  • Stellen Sie sicher, dass die Laufzeitversion von Azure Functions Version 4.28 oder neuer ist.
  • Prüfen Sie, ob app.setup({ enableHttpStream: true }) aufgerufen wird.
  • Verifizieren FUNCTIONS_REQUEST_BODY_SIZE_LIMIT ist für große Daten entsprechend eingestellt.

Hooks werden nicht ausgeführt

Wenn Ihre Hooks nicht ausgeführt werden:

  • Bestätige, dass du das Programmiermodell v4 verwendest.
  • Überprüfen Sie die Hook-Registrierungssyntax: app.hook.preInvocation() oder app.hook.appStart().
  • Achte darauf, dass du Hooks vor Funktionsdefinitionen registrierst.
  • Überprüfe die Trigger-Filterung, ob Hooks nur für bestimmte Funktionstypen laufen sollten.

Probleme mit der TypeScript-Kompilierung

Für TypeScript-spezifische Probleme:

Baufehler:

  • Überprüfen Sie, ob tsconfig.json korrekt auf Ihre Build-Ausgabe mit outDir verweist.
  • Stelle sicher, dass scriptFile im v3-Modell auf kompilierte .js-Dateien verweist, nicht auf .ts
  • Überprüfen Sie, dass alle TypeScript-Abhängigkeiten installiert sind: npm install --save-dev typescript @types/node

Typfehler:

  • Update-Paket @azure/functions für die neuesten Typdefinitionen
  • Verwenden Sie geeignete Importe: import { app, HttpRequest, InvocationContext } from '@azure/functions'
  • Überprüfen Sie, ob Funktionssignaturen mit erwarteten Typen übereinstimmen

Probleme der Modulauflösung

Modulfehler werden nicht gefunden:

  • Führen Sie npm install aus, um sicherzustellen, dass alle Abhängigkeiten installiert sind
  • Der Kontrollordner node_modules existiert im Bereitstellungspaket
  • Für ES-Module sollte sichergestellt werden, dass Dateinamen die Erweiterung .mjs haben oder dass package.json auf "type": "module" gesetzt ist.
  • Überprüfen Sie nach der TypeScript-Kompilierung die korrekten relativen Importpfade

Umwelt- und Konfigurationsprobleme

Fehlende Umweltvariablen:

  • Fügen Sie Variablen für die lokale Entwicklung hinzu local.settings.json
  • Setze Anwendungseinstellungen im Azure Portal für Cloud-Bereitstellung
  • Verwendung process.env["VARIABLE_NAME"] zum Zugriff auf Werte

Logging-Probleme:

  • Verwenden context.log() statt console.log() für funktionsspezifische Logs
  • Prüfen Sie, ob Application Insights Verbindungszeichenfolge konfiguriert ist
  • Überprüfen Sie die Log-Levels in host.json zum Filtern

Hilfe von Microsoft

Sie erhalten weitere Hilfe von Microsoft auf eine der folgenden Arten:

  • Durchsuchen Sie die bekannten Probleme im Azure Functions Node.js Repository. Wenn Ihr Problem nicht erwähnt wird, erstellen Sie ein neues Problem, und teilen Sie uns mit, was passiert ist.
  • Wenn Sie Ihr Problem mithilfe dieses Handbuchs nicht diagnostizieren können, stehen Microsoft Supporttechniker zur Verfügung, um Probleme mit Ihrer Anwendung zu diagnostizieren. Microsoft bietet verschiedene Supportpläne an. Erstellen Sie ein Supportticket im Abschnitt "Support + Problembehandlung" ihrer Funktions-App-Seite im Azure-Portal.

Nächste Schritte