• 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进程异常退出错误。

  • 相关阅读:
    【产品干货】经典营销模型的产品化介绍
    阿里云力夺FewCLUE榜首!知识融入预训练+小样本学习的实战解析
    云上资源编排的思与悟
    储留香:一个智能运维系统就是一个中枢神经系统,我说的!
    企业网管软件之SOLARWINDS实战-制作拓扑图
    企业网管软件之SOLARWINDS实战-基于浏览器的网络流量监控
    企业网管软件实战之看视频学装Cisco Works 2000
    轻松学习Linux之Shell预定义变量
    oracle的监听日志太大,正确的删除步骤
    MVC 使用HandleErrorAttribute统一处理异常
  • 原文地址:https://www.cnblogs.com/esctrionsit/p/15602157.html
Copyright © 2020-2023  润新知