我正在开发一个基于NodeJs的应用程序,它可以帮助我们公司的开发人员开发基于Electron的产品。它可以完成一些自动化工作,并且最终可以自动启动Electron应用程序。
在NodeJs中启动Electron应用程序并不是问题。通常情况下,应用程序会通过类似以下的bash脚本来启动:
我可以启动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');
命令,它会输出'The app was terminated',但是应用本身并没有关闭。
我尝试执行 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');
时它并没有关闭正在运行的应用程序。编辑:
我的假设是,Electron启动器实际上生成了一个新的子进程,因此杀死启动器并不会停止实际启动的应用程序。
这是
./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)
})
TypeError:app.quit不是函数
。 - karlitosexecFile('node', ['path/to/electron/cli.js', './myapp.js']
,并且可以成功退出。 - pergy./myapp.js
是原问题中的param1
参数,我编辑了我的问题以使其更加明显。 - karlitos