疑難排解 Azure Functions 中的 Node.js 應用程式

重要

本文的內容會根據您在頁面頂端選取器中選擇的 Node.js 程式設計模型而有所不同。 v4 模型已正式推出,旨在為 JavaScript 和 TypeScript 開發人員提供更靈活且更直覺的體驗。 在移轉指南中深入了解 v3 與 v4 之間的差異。

本文提供指引以疑難排解 Node.js 函數應用程式中的常見案例。

Azure 入口網站中的 [診斷和解決問題] 索引標籤是監視和診斷應用程式相關問題的實用資源。 它也會根據診斷為您的問題提供可能的解決方案。 如需詳細資訊,請參閱 Azure Functions 應用程式診斷 (部分機器翻譯)。

另一個針對 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、計時器等),請確定您已在啟動程式碼 (例如 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 應用程式所建議,並可確保應用程式深入解析記錄中會顯示所有進入點錯誤。 如需詳細資訊,請參閱 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 或更高版本。

無法偵測 Azure Functions 執行階段

如果您在函數應用程式記錄檔中收到下列錯誤:

錯誤: 無法偵測 Azure Functions 執行階段。 將「@azure/functions」套件切換至測試模式 - 不支援所有功能。

請檢查您的 package.json 檔案,以取得 applicationinsights 的參考並確定版本為 ^2.7.1 或更高版本。 在更新版本之後,請執行 npm install

取得 Microsoft 的協助

您可以透過下列其中一種方式以從 Microsoft 取得更多協助:

  • Azure Functions Node.js 存放庫中搜尋已知問題。 如果您沒有看到您的問題受提及,請建立新的問題,並讓我們知道發生了什麼事。
  • 如果無法使用本指南診斷您的問題,Microsoft 支援工程師可提供協助診斷應用程式的問題。 Microsoft 提供各種支援計劃。 在 Azure 入口網站中函數應用程式頁面的支援 + 疑難解答區段中,建立支援票證。

下一步