Хочу на сервере реализовать возможность запускать и останавливать node js приложения
Прочитал про
child_process
, но он только запускает, остановить приложение уже не могу
Вроде есть варианты делать
kill(pid)
, но как получить
pid
приложения, которое я запустил своим процессом, не нашел
import { exec, spawn } from 'child_process'
Так я пытался сделать через
exec
function execProcess(command) {
const cmd = exec(command, {cwd: '../node-default'}, (err, stdout, stderr) => {
console.log('stdout', stdout)
console.log('stderr', stderr)
})
setTimeout(() => {
cmd.kill()
}, 5000)
}
execProcess('npm start')
И попробовал через
spawn
В спавне почему-то, если вынести child в таймаут, то чайлд килл там не сработает, а сработает только, если указать вне таймаута
Из-за чего так?
const child = spawn('npm', ['start'], {cwd: '../node-default'})
child.stdout.on('data', (data) => {
console.log('stdout data toString', data.toString())
})
child.kill()
setTimeout(() => {
child.kill()
}, 3000)
Как мне запускать и останавливать
node
приложения и получать от них данные?
Получается только консоль логи приложения попадают мне в
stdout data
А можно как-то, кроме выведения консоли, отправить данные моему процессу?