共用方式為


為 Azure 選擇正確的 Node.js 版本

開發適用於 Azure 的 JavaScript 應用程式時,請務必確保本機開發環境中的 Node.js 版本與主機執行環境中的版本保持一致。 此版本對齊可確保相容性、降低運行時錯誤的可能性,以及使用 Azure 平臺的完整功能。 在本文中,您將瞭解如何為 Azure 裝載的應用程式和服務選取適當的 Node.js 版本。

Node.js 版本

Node.js 遵循可預測的發行排程,其中包含長期支援(LTS)和當前版本。 LTS 版本被指定為長期維護和穩定性,因此非常適用於生產環境。 這些版本會收到重大錯誤修正、安全性更新,以及延長的效能改善,通常為 30 個月。 Node.js 使用偶數/奇數編號系統來區分 LTS 和目前版本:偶數版本(例如 18,20) 是 LTS 版本,而奇數版本 (例如 19, 21) 是目前的版本。 目前的版本包含最新的功能和改進,但僅支援六個月,之後這些版本將成為 LTS 版本,如果它們是偶數版本。

您不應在生產環境中使用當前版本,因為六個月的更新周期可能會與 Azure 託管平台的運行時和 SDK 不對齊。 您會注意到 Node.js 的 開發容器不提供奇數版本或目前版本。

先決條件

所有 Azure SDKS 和載入服務都會使用 LTS 版本的 Node.js。 如果您的應用程式程式代碼已在舊版的 Node.js中執行,則不再提供長期支援 (LTS),您應該更新應用程式原始碼,以在 LTS 執行時間中執行。

您應該知道您想要部署到哪個主控服務,以及您的應用程式在部署後使用哪些 Azure 服務。

環境之間的相容性

一旦您知道應用程式使用哪一個 Azure 服務和 SDK,請確定應用程式的所有環境都可以建置並執行相同版本的 Node.js:

  • 本機開發環境或開發容器
  • CI/CD 進程環境
  • 應用程式主機運行時間
  • Azure SDK

如需有關在您的環境中使用不同版本的問題的說明,請參閱 相容性問題

主機代管服務

使用 Azure 主控服務時,您可以選取將容器部署至主機,或選取 Node.js 版本作為主機的運行時間。 在這兩種情況下,您需要使執行階段版本、應用程式碼,以及像 Azure SDK 這樣的相依性一致。

若要尋找執行時間資訊,請使用下表:

服務

版本資訊

Linux執行環境。 您也可以執行下列 Azure CLI 命令,以查看所有支援的版本。

az webapp list-runtimes | grep node

新項目應該使用最新的程序設計模型。

有兩個不同的執行環境需要考慮:若您在靜態 Web Apps 中裝載 API,則需考慮前端與 API。

SWA CLI 提供開發環境功能,包括 Proxy、驗證和其他組態。

Azure SDK

Azure SDK 需要 Node.js LTS 版本,如 支持原則中所述。 裝載環境支援的 LTS 版本與 SDK 不相符時,可能會有一段短暫的期間,因為驗證新的 Node.js LTS 版本需要時間。 因為通常有三個版本 Node.js 標示為長期支援版本,因此您通常可以將目標設為中間版本。 此目標可讓您有一些時間進行測試,並確認您的應用程式可以移至下一個 LTS 版本。

管理多個版本的 Node.js

當您需要在本機和遠端環境中管理多個版本的 Node.js 時,建議您:

  • 開發容器:使用具有特定 Node.js 版本的容器。 您可以使用容器來管理 Node.js 在多個環境中的版本。 Visual Studio Code Remote - Containers 的擴充功能 可簡化此流程。
  • NVM (節點版本管理員):命令行介面,用來設定或切換本機版本的 Node.js。

根據您的預期用途下載並安裝 Node.js

您可以根據您的需求下載並安裝 Node.js。

相容性問題

以下是一些常見的相容性問題類別,當 Node.js 版本在不同環境間不一致時,可能會發生:

  • 安全性弱點:使用具有已知安全性弱點的過時版本可能會讓應用程式面臨安全性風險。

  • 語法錯誤:使用舊版 Node.js 不支援最新 JavaScript 語法的應用程式可能會導致語法錯誤。 這些錯誤會防止應用程式執行。

  • 已被取代的 API:較新的 Node.js 版本中已被取代的 API 仍可能出現在舊版中,如果版本未對齊,則會導致非預期的行為或運行時錯誤。

  • 效能降低:較新的 Node.js 版本通常包括效能改善。 在較舊版本上執行您的應用程式可能會導致運行時間變慢,並降低效能。

  • 不一致的行為:Node.js 版本如何處理某些作業的差異,例如緩衝區處理、事件迴圈行為或模組解析,可能會導致整個環境的行為不一致。

  • 相依性衝突:Node.js 與某個版本 Node.js 相容的模組或套件可能無法與另一個版本相容,而導致相依性衝突和運行時間錯誤。

  • 建置失敗:使用與本機開發環境不同的 Node.js 版本 CI/CD 管線可能會導致建置失敗,導致開發和發行程序延遲。

藉由確保所有環境都使用相同的 Node.js版本,您可以降低這些相容性問題,並確保開發與部署程式更順暢。