【问题标题】:Electron.js processes do not exit on app.quitElectron.js 进程不会在 app.quit 上退出
【发布时间】:2023-02-07 14:23:50
【问题描述】:

当我运行 app.quit()app.exit() 时,主应用程序窗口关闭,但其他 4 个电子进程继续运行。

我认为这可能是由一个静默错误引起的,尝试用 try / catch 包装函数,但没有出现。

如果有人帮我找到问题/解释代码有什么问题,我将不胜感激

主要Electron进程的代码:

https://github.com/aleksey-hoffman/sigma-file-manager/blob/main/src/electronMain.js

如果你想运行它,这里是指令:

https://github.com/aleksey-hoffman/sigma-file-manager/blob/main/CONTRIBUTING.md

【问题讨论】:

  • 很多代码要经过。你知道这些基于命令行参数的进程是什么吗?它们像 Electron 渲染器/GPU/网络进程吗?主要过程?您的应用程序启动的第三方进程?
  • 所有 4 个进程都是 electron.exe 进程(GPU、隐藏渲染器、主进程),只有主渲染器窗口关闭,然后出现托盘和其他侦听器错误,因为主窗口不再存在但应用程序仍处于打开状态。我还尝试在关闭之前从窗口中删除监听器
  • 我发现问题是由initWindowListeners()引起的,如果我删除其中的所有内容,问题就消失了。因此,问题似乎出在 Windows eventListeners 阻止应用程序存在。现在我需要弄清楚如何删除所有这些听众
  • 特别是,问题出在这个监听器上:windows.quickViewWindow.once('closed', () => {createQuickViewWindow()})

标签: node.js electron


【解决方案1】:

发现问题 - 您必须删除一些创建的窗口侦听器,例如 closed,Electron 才能正常退出。

确保将相同的回调传递给removeListener

// Create window listeners
windows.quickViewWindow.once('closed', () => createQuickViewWindow)


// Remove window listeners
function removeWindowListeners () {
  windows.quickViewWindow.removeListener('closed', () => createQuickViewWindow)
}

electron.app.on('before-quit', () => {
  removeWindowListeners()
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2015-09-13
    • 2016-04-17
    • 1970-01-01
    相关资源
    最近更新 更多