跳到主要內容

Electron 33.0.0

·4 分鐘閱讀時間

Electron 33.0.0 已發布!它包含 Chromium 130.0.6723.44、V8 13.0 和 Node 20.18.0 的升級。


Electron 團隊很高興宣布 Electron 33.0.0 的發布!您可以使用 npm 透過 npm install electron@latest 安裝它,或從我們的發行網站下載它。繼續閱讀以了解有關此版本的詳細資訊。

如果您有任何意見回饋,請在 TwitterMastodon 上與我們分享,或加入我們的社群 Discord!錯誤和功能請求可以在 Electron 的 issue tracker 中回報。

重大變更

重點

  • 新增了一個處理常式 app.setClientCertRequestPasswordHandler(handler),以協助在需要 PIN 時解鎖加密裝置。#41205
  • 擴展了 navigationHistory API,新增了 2 個新函數以更好地管理歷史記錄。#42014
  • 改進了原生主題透明度檢查。#42862

堆疊變更

Electron 33 將 Chromium 從 128.0.6613.36 升級到 130.0.6723.44,Node 從 20.16.0 升級到 20.18.0,以及 V8 從 12.8 升級到 13.0

新功能

  • 新增了一個處理常式 app.setClientCertRequestPasswordHandler(handler),以協助在需要 PIN 時解鎖加密裝置。#41205
  • 在公用程式處理程序中新增了錯誤事件,以支援 V8 嚴重錯誤的診斷報告。#43997
  • 新增了 View.setBorderRadius(radius),用於自訂視圖的邊框圓角—與 WebContentsView 相容。#42320
  • 擴展了 navigationHistory API,新增了 2 個新函數以更好地管理歷史記錄。#42014

重大變更

已移除:macOS 10.15 支援

macOS 10.15 (Catalina) 不再受 Chromium 支援。

舊版本的 Electron 將繼續在 Catalina 上執行,但需要 macOS 11 (Big Sur) 或更高版本才能執行 Electron v33.0.0 及更高版本。

行為變更:原生模組現在需要 C++20

由於上游所做的變更,V8Node.js 現在都需要 C++20 作為最低版本。使用原生 Node 模組的開發人員應使用 --std=c++20 而非 --std=c++17 建置其模組。使用 gcc9 或更低版本的映像檔可能需要更新到 gcc10 才能編譯。請參閱 #43555 以取得更多詳細資訊。

行為變更:Windows 上的自訂協定 URL 處理

由於 Chromium 中為支援 非特殊方案 URL 所做的變更,使用 Windows 檔案路徑的自訂協定 URL 將不再能與已棄用的 protocol.registerFileProtocolBrowserWindow.loadURLWebContents.loadURL<webview>.loadURL 上的 baseURLForDataURL 屬性正確運作。protocol.handle 也將無法與這些類型的 URL 搭配使用,但這並非變更,因為它一直都是這樣運作。

// No longer works
protocol.registerFileProtocol('other', () => {
callback({ filePath: '/path/to/my/file' });
});

const mainWindow = new BrowserWindow();
mainWindow.loadURL(
'data:text/html,<script src="loaded-from-dataurl.js"></script>',
{ baseURLForDataURL: 'other://C:\\myapp' },
);
mainWindow.loadURL('other://C:\\myapp\\index.html');

// Replace with
const path = require('node:path');
const nodeUrl = require('node:url');
protocol.handle(other, (req) => {
const srcPath = 'C:\\myapp\\';
const reqURL = new URL(req.url);
return net.fetch(
nodeUrl.pathToFileURL(path.join(srcPath, reqURL.pathname)).toString(),
);
});

mainWindow.loadURL(
'data:text/html,<script src="loaded-from-dataurl.js"></script>',
{ baseURLForDataURL: 'other://' },
);
mainWindow.loadURL('other://index.html');

行為變更:apploginwebContents 屬性

當事件是為從使用 respondToAuthRequestsFromMainProcess 選項建立的 公用程式處理程序 提出的請求觸發時,來自 applogin 事件中的 webContents 屬性將為 null

已棄用:BrowserWindowConstructorOption.type 中的 textured 選項

BrowserWindowConstructorOptionstypetextured 選項已被棄用,沒有替代方案。此選項依賴 macOS 上的 NSWindowStyleMaskTexturedBackground 樣式遮罩,該樣式遮罩已被棄用,沒有替代方案。

已棄用:systemPreferences.accessibilityDisplayShouldReduceTransparency

systemPreferences.accessibilityDisplayShouldReduceTransparency 屬性現在已被棄用,改用新的 nativeTheme.prefersReducedTransparency,後者提供相同的資訊,並且可跨平台運作。

// Deprecated
const shouldReduceTransparency =
systemPreferences.accessibilityDisplayShouldReduceTransparency;

// Replace with:
const prefersReducedTransparency = nativeTheme.prefersReducedTransparency;

30.x.y 版本終止支援

根據專案的支援政策,Electron 30.x.y 已達到終止支援。建議開發人員和應用程式升級到較新版本的 Electron。

E33 (24 年 10 月)E34 (25 年 1 月)E35 (25 年 4 月)
33.x.y34.x.y35.x.y
32.x.y33.x.y34.x.y
31.x.y32.x.y33.x.y

下一步

在短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件(包括 Chromium、Node 和 V8)的開發進度。

您可以在此處找到 Electron 的公開時程表

有關未來變更的更多資訊,請參閱計畫的重大變更頁面。