Felsöka Node.js appar i Azure Functions

Important

Innehållet i den här artikeln ändras baserat på ditt val av Node.js programmeringsmodell i väljaren överst på sidan. V4-modellen är allmänt tillgänglig och är utformad för att ha en mer flexibel och intuitiv upplevelse för JavaScript- och TypeScript-utvecklare. Läs mer om skillnaderna mellan v3 och v4 i migreringsguiden.

Den här artikeln innehåller en guide för felsökning av vanliga scenarier i Node.js funktionsappar.

Fliken Diagnostisera och lösa problem i Azure-portalen är en användbar resurs för att övervaka och diagnostisera eventuella problem som rör ditt program. Det ger också potentiella lösningar på dina problem baserat på diagnosen. Mer information finns i Azure Funktionsappdiagnostik.

En annan användbar resurs är fliken Loggar i Azure-portalen för Application Insights-instansen så att du kan köra anpassade KQL-frågor. Följande exempelfråga visar hur du visar fel och varningar för din app under den senaste dagen:

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

Om dessa resurser inte löste problemet ger följande avsnitt råd om specifika programproblem:

Inga funktioner hittades

Om du ser något av följande fel i loggarna:

Inga HTTP-utlösare hittades.

Inga jobbfunktioner hittades. Försök att göra dina jobbklasser och metoder publika. Om du använder bindningstillägg (t.ex. Azure Storage, ServiceBus, Timers osv.) kontrollerar du att du har anropat registreringsmetoden för tilläggen i startkoden (t.ex. builder. Lägg tillAzureStorage(), builder. AddServiceBus(), byggare. AddTimers(), osv.).

Prova följande korrigeringar:

  • När du kör lokalt kontrollerar du att du använder Azure Functions Core Tools v4.0.5382 eller senare.
  • När du kör i Azure:
    • Kontrollera att du använder Azure Functions Runtime Version 4.25 eller senare.

    • Kontrollera att du använder Node.js v18 eller senare.

    • Ange appinställningen FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERROR till true. Den här inställningen rekommenderas för alla modell v4-appar och ser till att alla startpunktsfel visas i application insights-loggarna. Mer information finns i referensen Appinställningar för Azure Functions.

    • Kontrollera om det finns startpunktsfel i funktionsappens loggar. Följande exempelfråga visar hur du visar startpunktsfel för din app under den senaste dagen:

      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"
      
  • Kontrollera att din app har den mappstruktur som krävs med en host.json i roten och en mapp för varje funktion som innehåller en function.json fil.

Undici request är inte en konstruktorfunktion

Om du får följande fel i funktionsapploggarna:

System.Private.CoreLib: Undantag vid körning av funktion: Functions.httpTrigger1. System.Private.CoreLib: Result: Failure Exception: undici_1.Request är inte en konstruktor

Kontrollera att du använder Node.js version 22.x eller senare.

Det gick inte att identifiera körningsmiljön för Azure Functions

Om du får följande fel i funktionsapploggarna:

VARNING: Det gick inte att identifiera Azure Functions-körmiljön. Växla paketet "@azure/functions" till testläge – alla funktioner stöds inte.

Kontrollera filen package.json för en referens till applicationinsights och kontrollera att versionen av applicationinsights är eller högre. När du har uppdaterat versionen kör du npm install

HTTP-strömmar fungerar inte

Om HTTP-streaming inte fungerar:

  • Verifiera @azure/functions att paketversionen är 4.3.0 eller senare.
  • Se till att Azure Functions runtime-version är 4.28 eller senare.
  • Kontrollera att app.setup({ enableHttpStream: true }) anropas.
  • Verify FUNCTIONS_REQUEST_BODY_SIZE_LIMIT är korrekt inställd för stora data.

Krokar som inte utförs

Om dina krokar inte är igång:

  • Bekräfta att du använder programmeringsmodell v4.
  • Kontrollera syntax för hook-registrering: app.hook.preInvocation() eller app.hook.appStart().
  • Kontrollera att du registrerar hooks innan funktionsdefinitioner.
  • Gå igenom triggerfiltrering om hooks bara ska köras för specifika funktionstyper.

TypeScript-kompileringsproblem

För TypeScript-specifika problem:

Byggmisslyckanden:

  • Kontrollera att tsconfig.json har en korrekt outDir som pekar på ditt byggresultat
  • Se till att scriptFile modellen i v3 pekar på kompilerade .js filer, inte .ts
  • Kontrollera att alla TypeScript-beroenden är installerade: npm install --save-dev typescript @types/node

Typfel:

  • Uppdatera @azure/functions paket för de senaste typdefinitionerna
  • Använd rätt import: import { app, HttpRequest, InvocationContext } from '@azure/functions'
  • Verifiera att funktionssignaturer matchar förväntade typer

Problem med modulupplösning

Kan inte hitta modulfel:

  • Kör npm install för att säkerställa att alla beroenden är installerade
  • Kontrollmappen node_modules finns i distributionspaketet
  • För ES-moduler, se till att filnamn använder .mjs filändelsen eller package.json har "type": "module"
  • Verifiera att relativa importvägar är korrekta efter TypeScript-kompilering

Miljö- och konfigurationsproblem

Saknade miljövariabler:

  • Lägg till variabler i local.settings.json för lokal utveckling
  • Sätt applikationsinställningar i Azure portal för molndistribution
  • Använd process.env["VARIABLE_NAME"] för att komma åt värden

Loggningsproblem:

  • Använd context.log() istället för console.log() för funktionsspecifika loggar
  • Kontrollera att Application Insights reťazec pripojenia är konfigurerad
  • Kontrollera loggnivåer i host.json för filtrering

Få hjälp från Microsoft

Du kan få mer hjälp från Microsoft på något av följande sätt:

  • Sök efter kända problem på Azure Functions Node.js-lagringsplatsen. Om du inte ser ditt problem som nämns skapar du ett nytt problem och meddelar oss vad som har hänt.
  • Om du inte kan diagnostisera problemet med hjälp av den här guiden är Microsoft supporttekniker tillgängliga för att diagnostisera problem med ditt program. Microsoft erbjuder olika supportplaner. Skapa ett supportärende i avsnittet Support + felsökning på funktionsappsidan i Azure-portalen.

Nästa steg