Compartir a través de

排查 Azure Functions 中的 Node.js 应用问题

重要

本文的内容根据你在此页顶部的选择器中选择的 Node.js 编程模型而异。 v4 模型已正式发布,旨在为 JavaScript 和 TypeScript 开发人员提供更为灵活和直观的体验。 在迁移指南中详细了解 v3 和 v4 之间的差异。

本文提供了 Node.js 函数应用中常见方案的故障排除指南。

Azure 门户中“诊断和解决问题”选项卡是一种有用的资源,用于监视和诊断与应用程序相关的可能问题。 它还根据诊断提供问题的潜在解决方案。

另一个有用的资源是 Application Insights 实例的 Azure 门户中的“日志”选项卡,以便可以运行自定义 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 不是构造函数

请确保使用的是 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 门户中函数应用页的“支持 + 故障排除”部分创建支持票证。

后续步骤