Electron備忘錄


Electron是由GitHub開發的一個開源框架,原名為Atom Shell。其基於Node.js,使用chrome渲染引擎作為前端,可以進行跨平台的桌面GUI應用程序開發。如VSCode就是采用Electron開發的。

使用中出現的問題

linux下的root權限問題

在linux下運行時,如果直接以非root用戶運行,會得到如下錯誤信息:

[184165:1125/121932.289721:FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /electrontest/node_modules/electron/dist/chrome-sandbox is owned by root and has mode 4755.
Trace/breakpoint trap (core dumped)

根據錯誤提示,只需運行如下命令即可(需要root權限)

sudo chown root:root /electrontest/node_modules/electron/dist/chrome-sandbox
sudo chmod 4755 /electrontest/node_modules/electron/dist/chrome-sandbox

需要注意的是,該錯誤是由於chrome-sandbox由於是沙箱程序,所以底層調用了需要root權限的api(大概)才產生的。在沒有root權限的情況下(如統一管理的大型服務器系統),經測試,無論使用electron-packager打包成二進制軟件,還是使用electron-builder打包成AppImage文件,都無法簡單繞過該問題。

Windows下 GPU process exited unexpectedly

在筆者的一台Win10台式機上,electron官方demo運行時報出了如下錯誤,主窗口成功產生但內容空白。吊詭的是,通過菜單欄打開的子窗口內容顯示正常,且沒有新的報錯信息產生,原因不明。除此之外,當全部窗口關閉時,electron程序並不能正常退出,依然留在后台,需要使用任務管理器手動關閉。

> electrontest@1.0.0 start D:\electron-quick-start
electron .

[15988:1125/122710.428:ERROR:gpu_process_host.cc(968)] GPU process exited unexpectedly: exit_code=-1073741819
[15988:1125/122710.556:ERROR:gpu_process_host.cc(968)] GPU process exited unexpectedly: exit_code=-1073741819
[15988:1125/122710.678:ERROR:gpu_process_host.cc(968)] GPU process exited unexpectedly: exit_code=-1073741819
[15988:1125/122710.795:ERROR:gpu_process_host.cc(968)] GPU process exited unexpectedly: exit_code=-1073741819
[15988:1125/122710.913:ERROR:gpu_process_host.cc(968)] GPU process exited unexpectedly: exit_code=-1073741819
[15988:1125/122711.030:ERROR:gpu_process_host.cc(968)] GPU process exited unexpectedly: exit_code=-1073741819

該錯誤產生時,使用的electron版本是16.0.1,硬件為R5 3600+GTX760。該錯誤目前尚未在其他win10電腦上觀察到。

在electron版本16.0.1下,可添加如下代碼部分解決問題(GPU進程異常退出提示減少為2條,主窗口正常顯示內容):

app.disableHardwareAcceleration();

// 只加上面那個就行,下面兩個加上效果相同
app.commandLine.appendSwitch('enable-transparent-visuals');
app.commandLine.appendSwitch('disable-gpu');

此外,經測試可直接將package.js中electron版本設為^12.0.012.x版本中目前最新的是12.2.3,發布於2021年11月16日。采用該版本運行時完全沒有出現GPU進程異常退出錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM