@Boris007

Как с помощью child_process { exec, spawn } запускать и останавливать приложение через команды npm?

Хочу на сервере реализовать возможность запускать и останавливать 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
А можно как-то, кроме выведения консоли, отправить данные моему процессу?
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы