【问题标题】:How to start and stop Electron application from NodeJs如何从 NodeJs 启动和停止 Electron 应用程序
【发布时间】:2019-02-14 21:44:06
【问题描述】:

我正在开发一个 NodeJs 应用程序,它可以帮助我公司的开发人员开发我们基于 Electron 的产品。它做了一些自动化,最后,它会自动启动 Electron 应用程序。

从 NodeJs 内部启动 Electron 应用程序不是问题。通常,应用程序是使用 bash 脚本启动的,如下所示:

#!/bin/sh

HOME=$PWD/home-dir ./node_modules/.bin/electron myAppDir

myAppDir 是我的 Electron-App 所在的目录,也可以是一个 JavaScript 文件。

值得一提的是,./node_modules/.bin/electron 只是./node_modules/electron/cli.js 的符号链接

我做了以下:

const app = execFile('/the/path/to/the/bash/script', [], {
            windowsHide: true,
        },(error, stdout, stderr) => {
            if (error) {
                throw error;
            }
            warn('The app was terminated');
        });

这可以很好地启动应用程序。但是,如果我执行app.kill('SIGTERM');,它会输出 '应用程序已终止',但应用程序本身不会关闭。

我尝试改为执行node_modules/.bin/electron./node_modules/electron/cli.js

const app = execFile('/the/path/to/node_modules/.bin/electron', ['myAppDir'], {
            windowsHide: true,
            detached: true,
            env: {
                HOME: 'path/to/home'),
            }

我可以再次启动 Electron 应用程序 - 当我这样做时它不会关闭正在运行的应用程序 app.kill('SIGTERM');

编辑:

我的假设是,电子启动器实际上产生了一个新的子进程,因此终止启动器并不会停止实际启动的应用程序。

这是./node_modules/.bin/electron(或分别为./node_modules/electron/cli.js)的内容

#!/usr/bin/env node

var electron = require('./')

var proc = require('child_process')

var child = proc.spawn(electron, process.argv.slice(2), {stdio: 'inherit'})
child.on('close', function (code) {
  process.exit(code)
})

【问题讨论】:

  • 你试过'app.quit()'吗?
  • 然后我得到TypeError: app.quit is not a function
  • 您可以在电子应用程序中执行此操作。我只是从 NodeJs 脚本启动一个电子应用程序。
  • "我试图执行 node_modules/.bin/electron" 我不能用你的代码。唯一对我有用的是execFile('node', ['path/to/electron/cli.js', './myapp.js'],它成功退出杀戮。
  • ./myapp.js 是原始问题中的param1 参数,我编辑了我的问题,所以它更明显。

标签: javascript node.js electron launching-application


【解决方案1】:

您可以在节点应用程序https://www.npmjs.com/package/systeminformation 中使用此库,并通过其 .processes(cb) 方法找到正在运行的电子应用程序并在 processes 方法的回调中将其杀死。

【讨论】:

  • 感谢您的建议,但我会接受这只是一种解决方法。必须可以从另一个 NodeJs 应用程序中启动和停止一个 NodeJs 应用程序,而无需处理 PID。
猜你喜欢
  • 2019-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多