Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Important
Obsah tohoto článku se změní na základě vašeho výběru programovacího modelu Node.js v selektoru v horní části stránky. Model v4 je obecně dostupný a je navržený tak, aby měl flexibilnější a intuitivnější prostředí pro vývojáře v JavaScriptu a TypeScriptu. Další informace o rozdílech mezi v3 a v4 najdete v průvodci migrací.
Tento článek poskytuje návod k řešení běžných problémů v aplikacích funkcí v Node.js.
Karta Diagnostika a řešení problémů na portálu Azure je užitečným prostředkem k monitorování a diagnostice možných problémů souvisejících s vaší aplikací. Poskytuje také potenciální řešení vašich problémů na základě diagnostiky. Pro více informací, podívejte se na diagnostika aplikací Azure Functions.
Dalším užitečným prostředkem je karta Protokoly na portálu Azure pro vaši instanci Application Insights, abyste mohli spouštět vlastní dotazy KQL. Následující ukázkový dotaz ukazuje, jak zobrazit chyby a upozornění aplikace za poslední den:
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
Pokud tyto prostředky váš problém nevyřeší, následující části poskytují rady pro konkrétní problémy s aplikacemi:
Nenašly se žádné funkce.
Pokud se v protokolech zobrazí některá z následujících chyb:
Nenašly se žádné triggery HTTP.
Nebyly nalezeny žádné pracovní funkce. Zkuste, aby vaše třídy a metody úloh byly veřejné. Pokud používáte rozšíření pro vazby (např. Azure Storage, ServiceBus, Timers atd.), ujistěte se, že jste ve spouštěcím kódu zavolali metodu registrace pro daná rozšíření (např. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers() atd.).
Vyzkoušejte následující opravy:
- Při místním spuštění se ujistěte, že používáte Azure Functions Core Tools verze 4.0.5382 nebo novější.
- Při spuštění v Azure:
Ujistěte se, že používáte Azure Functions Runtime verze 4.25 nebo vyšší.
Ujistěte se, že používáte Node.js v18 nebo vyšší.
Nastavte nastavení aplikace
FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERRORnatrue. Toto nastavení se doporučuje pro všechny aplikace modelu v4 a zajišťuje, aby se v protokolech Application Insights zobrazovaly všechny chyby vstupních bodů. Další informace najdete v referenčních informacích k nastavení aplikace pro Azure Functions.Zkontrolujte chyby vstupního bodu v protokolech aplikace funkcí. Následující příklad dotazu ukazuje, jak zobrazit chyby vstupního bodu pro vaši aplikaci za poslední den:
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"
- Ujistěte se, že aplikace má požadovanou strukturu složek s host.json v kořenovém adresáři a složku pro každou funkci, která obsahuje soubor function.json.
Undici request není konstruktor
Pokud se v protokolech aplikace funkcí zobrazí následující chyba:
System.Private.CoreLib: Výjimka při provádění funkce: Functions.httpTrigger1. System.Private.CoreLib: Výsledek: Výjimka selhání: undici_1.Request není konstruktor
Ujistěte se, že používáte Node.js verze 22.x nebo vyšší.
Nepodařilo se rozpoznat běhové prostředí Azure Functions
Pokud se v protokolech aplikace funkcí zobrazí následující chyba:
UPOZORNĚNÍ: Nepodařilo se zjistit modul runtime Azure Functions. Přepnutí balíčku @azure/functions do testovacího režimu – ne všechny funkce jsou podporované.
Zkontrolujte, zda váš soubor package.json obsahuje odkaz na applicationinsights, a ujistěte se, že verze je ^2.7.1 nebo vyšší. Po aktualizaci verze spusťte příkaz npm install
HTTP streamy nefungují
Pokud HTTP streamování nefunguje:
- Ověřte
@azure/functionsverzi balíčku 4.3.0 nebo novější. - Ujistěte se, že verze modulu runtime Azure Functions je 4.28 nebo vyšší.
- Zkontrolujte, zda je volána funkce
app.setup({ enableHttpStream: true }). - Verify
FUNCTIONS_REQUEST_BODY_SIZE_LIMITje nastaven správně pro velká data.
Háky se neprovádějí
Pokud háčky neběží:
- Ověřte si, že používáte programovací model v4.
- Ověřte syntaxi registrace hooku:
app.hook.preInvocation()neboapp.hook.appStart(). - Zkontrolujte, že před definicemi funkcí registrujete hooky.
- Zkontrolujte filtrování spouštěčů, zda by háky měly běžet jen u určitých typů funkcí.
Problémy s kompilací TypeScriptu
Pro specifické problémy TypeScriptu:
Selhání při sestavování:
- Ověřte, že
tsconfig.jsonmá správnéoutDir, které ukazuje na výstup vašeho buildu. - Zajistěte, že
scriptFilemodel ve v3 ukazuje na kompilované.jssoubory, ne.ts - Zkontrolujte, zda jsou všechny závislosti TypeScriptu nainstalované:
npm install --save-dev typescript @types/node
Typové chyby:
- Aktualizovat
@azure/functionsbalíček pro nejnovější definice typů - Používejte správné importy:
import { app, HttpRequest, InvocationContext } from '@azure/functions' - Ověřte, že podpisy funkcí odpovídají očekávaným typům
Problémy řešení modulů
Nelze najít chyby modulů:
- Spusťte
npm install, aby byly nainstalovány všechny závislosti. - Zkontrolujte, zda složka
node_modulesexistuje v balíčku pro nasazení - U ES modulů je důležité zajistit, aby názvy souborů používaly
.mjspříponu nebopackage.jsonmají"type": "module" - Ověřte správnost relativních importních cest po kompilaci TypeScriptu
Problémy s prostředím a konfigurací
Chybějící proměnné prostředí:
- Přidat proměnné do
local.settings.jsonpro místní vývoj - Nastavení aplikace v Azure portal pro nasazení do cloudu
- Použití
process.env["VARIABLE_NAME"]k přístupu k hodnotám
Problémy s logováním:
- Použijte
context.log()místoconsole.log()pro protokoly specifické pro funkci - Zkontrolujte, zda je připojovací řetězec pro Application Insights nakonfigurován
- Ověřte v
host.jsonúrovně logů pro filtrování
Získání nápovědy od Microsoft
Další pomoc můžete získat z Microsoft jedním z následujících způsobů:
- Prohledejte známé problémy v úložišti Azure Functions Node.js. Pokud se váš problém nezmíní, vytvořte nový problém a dejte nám vědět, co se stalo.
- Pokud se vám nedaří diagnostikovat váš problém pomocí této příručky, jsou k dispozici Microsoft technici podpory, kteří vám pomůžou diagnostikovat problémy s vaší aplikací. Microsoft nabízí různé plány podpory. Vytvořte lístek podpory v části Podpora a řešení potíží na stránce vaší aplikace funkcí na portálu Azure.