Node.js 23 現已推出,帶來了新功能、效能改進和更好的開發者體驗。此次版本提升了相容性和穩定性,提供了更多工具來構建高效的應用程式。
此外,Node.js 22 將在 10 月 29 日當週被提升爲長期支援 (LTS) 版本,進入長期維護階段,以確保穩定和安全的更新。
Node.js 23 的亮點:
-
支援使用 require() 載入原生 ES 模組——在 v23.0.0 之前,該功能是透過 --experimental-require-module 啟用的。 -
移除對 Windows 32 位系統的支援:Node.js 23 不再支援 32 位 Windows,重點支援現代環境。 -
穩定了 --run 命令:--run 標誌已被穩定化,提升了指令碼執行效率。 -
測試執行器增強:測試執行器現在支援針對覆蓋檔案的全域性模式,改進了測試配置。
關於 Node.js 專案版本號的一些提醒:像今天釋出的 Node.js 23 這樣奇數版本非常適合在您的特定環境中進行早期功能測試。奇數版本不會被提升爲 LTS。偶數版本如當前的 Node.js 22,一旦成為 LTS,將重點關注穩定性和安全性,並支援 30 個月。
預設啟用 require(esm)
使用 require() 載入原生 ES 模組的支援已在 v20.x 和 v22.x 中透過命令列標誌 --experimental-require-module 提供。在 v23.x 中,此功能現已預設啟用。此功能仍為實驗性功能,我們正在尋求使用者反饋,以便在完全穩定之前進行更多的最終調整。因此,在 v23.x 中,當 Node.js 例項首次在 require() 中遇到原生 ES 模組時,會發出實驗性警告。
如果此功能導致任何迴歸問題,使用者可以將其報告到 Node.js 的問題跟蹤器。同時,此功能也可以透過 --no-experimental-require-module 作為解決方法禁用。我們預計將在 v23.x 中測試此功能,找出潛在的迴歸問題並相應地進行調整,然後再將這一取消標誌的更改回溯到 v22.x。這可能會在 10 月底 LTS 推廣後的某個 semver-minor 版本中發生。
啟用此功能後,Node.js 將不再在使用 require() 載入 ES 模組時丟擲 ERR_REQUIRE_ESM。但是,如果被載入的 ES 模組或其依賴項包含頂層 await,則可能會丟擲 ERR_REQUIRE_ASYNC_MODULE。當 require() 成功載入 ES 模組時,返回的物件將是一個類似於 import() 返回的 ES 模組名稱空間物件,並且可以使用 util.isModuleNamespaceObject() 進行檢查。
使用者可以透過 process.features.require_module 檢查當前 Node.js 例項是否啟用了 require(esm)。對於包來說,可以使用 "module-sync" 匯出條件來檢測當前 Node.js 例項是否支援 require(esm),並允許 require() 和 import 都載入同一個原生 ES 模組。有關此功能的更多詳細資訊,請參閱文件。
原文:https://nodejs.org/en/blog/release/v23.0.0