Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważna
Zawartość tego artykułu zmienia się w zależności od wybranego modelu programowania Node.js w selektorze w górnej części strony. Model w wersji 4 jest ogólnie dostępny i zapewnia bardziej elastyczne i intuicyjne doświadczenie dla deweloperów języka JavaScript i TypeScript. Dowiedz się więcej o różnicach między wersjami v3 i v4 w przewodniku migracji.
Ten artykuł zawiera przewodnik rozwiązywania problemów z typowymi scenariuszami w aplikacjach funkcji Node.js.
Karta Diagnozowanie i rozwiązywanie problemów w portalu Azure jest przydatnym zasobem do monitorowania i diagnozowania możliwych problemów związanych z aplikacją. Dostarcza również potencjalne rozwiązania problemów na podstawie diagnozy. Aby uzyskać więcej informacji, zobacz Diagnostyka aplikacji funkcji Azure.
Innym przydatnym miejscem jest karta Dzienniki w portalu Azure dla wystąpienia usługi Application Insights, gdzie można uruchamiać niestandardowe zapytania KQL. Poniższe przykładowe zapytanie pokazuje, jak wyświetlać błędy i ostrzeżenia dla aplikacji w ciągu ostatniego dnia:
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
Jeśli te zasoby nie rozwiązały problemu, poniższe sekcje zawierają porady dotyczące określonych problemów z aplikacjami:
Nie znaleziono funkcji
Jeśli w dziennikach są widoczne jakiekolwiek z następujących błędów:
Nie znaleziono żadnych wyzwalaczy HTTP.
Nie znaleziono funkcji zadań. Spróbuj ustawić klasy zadań i metody jako publiczne. Jeśli używasz rozszerzeń powiązań (np. Azure Storage, ServiceBus, Timers itd.), upewnij się, że w kodzie startowym wywołano metodę rejestracji dla danego rozszerzenia (np. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers() itd.).
Wypróbuj następujące poprawki:
- Podczas uruchamiania lokalnego upewnij się, że używasz narzędzi Azure Functions Core Tools w wersji 4.0.5382 lub nowszej.
- Podczas uruchamiania w Azure:
Upewnij się, że używasz środowiska uruchomieniowego Azure Functions w wersji 4.25 lub nowszej.
Upewnij się, że używasz Node.js w wersji 18 lub nowszej.
Ustaw ustawienie
FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERRORaplikacji natrue. To ustawienie jest zalecane dla wszystkich aplikacji korzystających z modelu v4 i zapewnia, że wszystkie błędy punktu wejściowego są widoczne w dziennikach Application Insights. Aby uzyskać więcej informacji, zobacz Dokumentacja ustawień aplikacji dla usługi Azure Functions.Sprawdź dzienniki aplikacji funkcji pod kątem błędów związanych z punktem wejścia. Poniższe przykładowe zapytanie pokazuje, jak wyświetlić błędy punktu wejścia w aplikacji z ostatniego dnia:
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"
- Upewnij się, że aplikacja ma wymaganą strukturę folderów z host.json w katalogu głównym i folderem dla każdej funkcji zawierającej plik function.json .
request Undici nie jest konstruktorem
Jeśli w dziennikach aplikacji funkcji pojawi się następujący błąd:
System.Private.CoreLib: Wyjątek podczas wykonywania funkcji: Functions.httpTrigger1. System.Private.CoreLib: Result: Failure Exception: undici_1.Request nie jest konstruktorem
Upewnij się, że używasz Node.js w wersji 22.x lub nowszej.
Nie można wykryć środowiska uruchomieniowego Azure Functions
Jeśli w dziennikach aplikacji funkcji pojawi się następujący błąd:
OSTRZEŻENIE: Nie można wykryć środowiska uruchomieniowego Azure Functions. Przełączanie pakietu "@azure/functions" na tryb testowy — nie wszystkie funkcje są obsługiwane.
Sprawdź plik package.json pod kątem odwołania do applicationinsights i upewnij się, że wersja to ^2.7.1 lub nowsza. Po zaktualizowaniu wersji uruchom polecenie npm install
Strumienie HTTP nie działają
Jeśli streaming HTTP nie działa:
- Sprawdź,
@azure/functionsczy wersja pakietu to wersja 4.3.0 lub nowsza. - Upewnij się, że wersja środowiska uruchomieniowego Azure Functions to 4.28 lub nowsza.
- Sprawdź, czy
app.setup({ enableHttpStream: true })jest wywoływane. - Sprawdź, czy
FUNCTIONS_REQUEST_BODY_SIZE_LIMITjest odpowiednio ustawiony dla dużych zbiorów danych.
Hooki nie są wykonywane
Jeśli hooki się nie uruchamiają:
- Potwierdź, że używasz modelu programowania v4.
- Weryfikuj składnię rejestracji hooków:
app.hook.preInvocation()lubapp.hook.appStart(). - Sprawdź, czy rejestrujesz hooki przed definicjami funkcji.
- Sprawdź filtrowanie wyzwalaczy, jeśli hooki mają działać tylko dla określonych typów funkcji.
Problemy z kompilacją TypeScript
W przypadku problemów specyficznych dla TypeScript:
Awarie buildów:
- Sprawdź, czy
tsconfig.jsonma poprawneoutDirwskazujące na wynik kompilacji. - Upewnij się
scriptFile, że w modelu v3 wskazuje się na skompilowane pliki.js, a nie.ts - Sprawdź, czy wszystkie zależności TypeScript są zainstalowane:
npm install --save-dev typescript @types/node
Błędy typu:
- Aktualizuj
@azure/functionspakiet o najnowsze definicje typów - Używaj odpowiednich importów:
import { app, HttpRequest, InvocationContext } from '@azure/functions' - Sprawdź, czy sygnatury funkcji odpowiadają oczekiwanym typom
Problemy rozwiązywania modułów
Nie można znaleźć błędów modułów:
- Uruchom,
npm installaby upewnić się, że wszystkie zależności są zainstalowane - Sprawdź, czy folder
node_modulesistnieje w pakiecie wdrożenia - W przypadku modułów ES upewnij się, że nazwy plików mają rozszerzenie
.mjslub że plikpackage.jsonzawiera"type": "module" - Sprawdź, czy względne ścieżki importu są poprawne po kompilacji TypeScript
Problemy środowiskowe i konfiguracyjne
Brakujące zmienne środowiskowe:
- Dodaj zmienne do
local.settings.jsonna potrzeby lokalnego programowania - Ustaw ustawienia aplikacji w portalu Azure na potrzeby wdrożenia w chmurze
- Wykorzystanie
process.env["VARIABLE_NAME"]do dostępu do wartości
Problemy z logowaniem:
- Zastosowanie
context.log()zamiastconsole.log()dla logów specyficznych dla funkcji - Sprawdź, czy parametry połączenia usługi Application Insights są skonfigurowane
- Sprawdź poziomy logów w
host.jsondo filtrowania
Uzyskiwanie pomocy od Microsoft
Możesz uzyskać więcej pomocy od Microsoft w jeden z następujących sposobów:
- Wyszukaj znane problemy w repozytorium Azure Functions Node.js. Jeśli nie widzisz wymienionego problemu, utwórz nowy problem i poinformuj nas o tym, co się stało.
- Jeśli nie możesz zdiagnozować problemu, korzystając z tego przewodnika, Microsoft inżynierowie pomocy technicznej są dostępni, aby ułatwić diagnozowanie problemów z aplikacją. Microsoft oferuje różne plany pomocy technicznej. Utwórz bilet pomocy technicznej w sekcji Pomoc techniczna i rozwiązywanie problemów na stronie aplikacji funkcji w portalu Azure.