I am working on a NodeJs application which helps the developers in my company with the development of our Electron-based product. It does some automatization and at the end, it starts the Electron-app automatically.
Starting the Electron app from inside NodeJs is not a problem. normally the apps are started with a bash script which looks like:
#!/bin/sh HOME=$PWD/home-dir ./node_modules/.bin/electron myAppDir myAppDir is the directory with my Electron-App, could be a JavaScript file as well.
Worth to mention, that ./node_modules/.bin/electron is just a symlink to ./node_modules/electron/cli.js
I did following:
const app = execFile('/the/path/to/the/bash/script', [], { windowsHide: true, },(error, stdout, stderr) => { if (error) { throw error; } warn('The app was terminated'); }); This starts the app just fine. However if I do app.kill('SIGTERM'); it outputs the 'The app was terminated' but the app itself does not close.
I tried to execute the node_modules/.bin/electron or the ./node_modules/electron/cli.js instead:
const app = execFile('/the/path/to/node_modules/.bin/electron', ['myAppDir'], { windowsHide: true, detached: true, env: { HOME: 'path/to/home'), } I can launch the Electron app but again - it does not close the running app when I do app.kill('SIGTERM');
EDIT:
My assumption is, that the electron launcher actually spawns a new subprocess, thus killing the launcher does not stops the actual launched app.
This is the content of ./node_modules/.bin/electron (or ./node_modules/electron/cli.js respectively)
#!/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 is not a functionexecFile('node', ['path/to/electron/cli.js', './myapp.js']and it quits for kill successfully../myapp.jswas theparam1Parameter in the original question, I edited my question so it is more obvious.