Electron 33.0.0
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
安裝它,或從我們的發行網站下載它。繼續閱讀以了解有關此版本的詳細資訊。
如果您有任何意見回饋,請在 Twitter 或 Mastodon 上與我們分享,或加入我們的社群 Discord!錯誤和功能請求可以在 Electron 的 issue tracker 中回報。
重大變更
重點
- 新增了一個處理常式
app.setClientCertRequestPasswordHandler(handler)
,以協助在需要 PIN 時解鎖加密裝置。#41205 - 擴展了
navigationHistory
API,新增了 2 個新函數以更好地管理歷史記錄。#42014 - 改進了原生主題透明度檢查。#42862
堆疊變更
- Chromium
130.0.6723.44
- Node
20.18.0
- V8
13.0
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
由於上游所做的變更,V8 和 Node.js 現在都需要 C++20 作為最低版本。使用原生 Node 模組的開發人員應使用 --std=c++20
而非 --std=c++17
建置其模組。使用 gcc9 或更低版本的映像檔可能需要更新到 gcc10 才能編譯。請參閱 #43555 以取得更多詳細資訊。
行為變更:Windows 上的自訂協定 URL 處理
由於 Chromium 中為支援 非特殊方案 URL 所做的變更,使用 Windows 檔案路徑的自訂協定 URL 將不再能與已棄用的 protocol.registerFileProtocol
和 BrowserWindow.loadURL
、WebContents.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');
行為變更:app
上 login
的 webContents
屬性
當事件是為從使用 respondToAuthRequestsFromMainProcess
選項建立的 公用程式處理程序 提出的請求觸發時,來自 app
的 login
事件中的 webContents
屬性將為 null
。
已棄用:BrowserWindowConstructorOption.type
中的 textured
選項
BrowserWindowConstructorOptions
中 type
的 textured
選項已被棄用,沒有替代方案。此選項依賴 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.y | 34.x.y | 35.x.y |
32.x.y | 33.x.y | 34.x.y |
31.x.y | 32.x.y | 33.x.y |
下一步
在短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件(包括 Chromium、Node 和 V8)的開發進度。
您可以在此處找到 Electron 的公開時程表。
有關未來變更的更多資訊,請參閱計畫的重大變更頁面。