通过 Windows cmd.exe 运行时,Electron 应用程序不会返回

问题描述 投票:0回答:1

如果我在命令提示符下运行 Electron exe,应用程序就会运行,但是当窗口关闭时,控制不会传递回命令提示符。

我必须按 Ctrl+C 然后才能重新获得控制权。

为了拦截窗口的关闭,我这样做:

app.on('window-all-closed', () => {
    log.debug('window-all-closed' + os.EOL);
    expectKill=true;
    if (serverProcess) {
        log.debug('Killing ' + serverProcess.pid + os.EOL);
        const kill = require('tree-kill');
        kill(serverProcess.pid, 'SIGTERM', function () {
            serverProcess = null;
        });
    }
    if (process.platform !== 'darwin') {
        log.debug('app.quit()' + os.EOL);
        app.quit();
    }
    return;
})

serverProcess
是一个衍生进程。我可以看到它被正确杀死了。

在日志中我可以看到:

app.quit()

Electron 应用程序创建的所有进程,包括上面提到的

serverProcess
和 Electron exe 本身都会从任务管理器中消失。

然而,控制权永远不会回来:

C:\Program Files\electron-app\bin>electron-app.exe

C:\Program Files\electron-app\bin>
19:15:06.566 > window-all-closed

19:15:06.575 > Killing 3144

19:15:06.589 > app.quit()

有时,如果我重新启动应用程序,我会遇到奇怪的问题:

C:\Program Files\electron-app\bin>electron-app.exe

C:\Program Files\electron-app\bin>

...应用程序此时挂起,我必须按 Ctrl+C 将其返回到 cmd.exe 控制。

为什么在调用

app.quit()
后没有将控制权交还给 cmd.exe?

windows cmd electron electron-builder
1个回答
0
投票

看起来控制已经回到了cmd.exe。它已经打印了提示并等待您输入命令。之后,您的应用程序将一些日志消息打印到屏幕上并退出。没有任何东西挂起 - 输出看起来很混乱。

同时,cmd.exe 仍在等待您键入下一个命令。如果你按回车cmd.exe会打印一个新的提示,不需要输入ctrl+c。

这是带注释的输出:

C:\Program Files lectron-app > electro-app.exe

C:\Program Files lectron-app > <== THE PROMPT IS ALREADY HERE

19:15:06.566 > 窗口全部关闭

19:15:06.575 > 杀死 3144

19:15:06.589 > app.quit()

© www.soinside.com 2019 - 2024. All rights reserved.