对 Azure Functions 中的 Node.js 应用进行故障排除
重要
本文的内容根据你在此页顶部的选择器中选择的 Node.js 编程模型而异。 v4 模型目前处于预览状态,旨在为 JavaScript 和 TypeScript 开发人员提供更为灵活和直观的体验。 在升级指南中详细了解 v3 和 v4 之间的差异。
本文提供了有关 Node.js 函数应用中常见方案故障排除的指南。
Azure 门户中的“诊断和解决问题”选项卡是监视和诊断与应用程序相关的可能问题的有用资源。 它还会根据诊断为问题提供潜在的解决方案。
另一个有用的资源是 Azure 门户中 Application Insights 实例的“日志”选项卡,使你可以运行自定义 KQL 查询。 以下示例查询显示如何查看过去一天应用的错误和警告:
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
如果这些资源无法解决问题,以下部分提供了有关特定应用程序问题的建议:
找不到任何函数
如果在日志中看到以下任何错误:
找不到 HTTP 触发器。
找不到作业函数。 尝试公开作业类和方法。 如果使用绑定扩展(例如 Azure 存储、ServiceBus、Timers 等),请确保你已在启动代码(例如 builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers() 等)中调用扩展的注册方法。
请尝试以下修补程序:
- 在本地运行时,请确保使用 Azure Functions Core Tools v4.0.5382 或更高版本。
- 在 Azure 中运行时:
请确保使用 Azure Functions 运行时版本 4.25 或更高版本。
请确保使用的是 Node.js v18 或更高版本。
将应用设置
FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERROR
设置为true
。 建议对所有模型 v4 应用使用此设置,并确保所有入口点错误在 application Insights 日志中可见。 有关详细信息,请参阅 Azure Functions 的应用设置参考。检查函数应用日志中是否存在入口点错误。 以下示例查询显示如何查看过去一天应用的入口点错误:
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"
- 确保应用具有所需的文件夹结构,根目录中有 host.json,每个函数都有一个包含 function.json 文件的文件夹。
Undici 请求不是构造函数
如果函数应用日志中出现以下错误:
System.Private.CoreLib:执行函数时出现异常:Functions.httpTrigger1。 System.Private.CoreLib:结果:故障异常:undici_1.Request is not a constructor
请确保使用 Node.js 版本 18.x 或更高版本。
未能检测到 Azure Functions 运行时
如果函数应用日志中出现以下错误:
警告:未能检测到 Azure Functions 运行时。 将“@azure/functions”包切换到测试模式 - 并非所有功能都受支持。
查看 package.json
文件中对 applicationinsights
的引用,并确保版本为 ^2.7.1
或更高版本。 更新版本后,运行 npm install
从 Microsoft 获取帮助
可以通过以下方式之一从 Microsoft 获取更多帮助:
- 在 Azure Functions Node.js 存储库中搜索已知问题。 如果你没有看到你的问题被提及,请创建一个新问题,并告诉我们发生了什么情况。
- 如果无法使用本指南诊断问题,Microsoft 支持工程师可帮助诊断应用程序的问题。 Microsoft 提供各种支持计划。 在 Azure 门户中的函数应用页面的“支持 + 故障排除”部分中创建支持工单。