Убить дочерний процесс в Node.js, пока работает сервер

Я пытаюсь убить дочерний процесс, запущенный на моем сервере. По сути, дочерний процесс запускает код johnny-five, который я написал в онлайн-терминале в React, на моем сервере. Когда я запускаю дочерний процесс, код работает отлично, но если я хочу убить дочерний процесс, я не могу сделать это, не останавливая сервер. Я пытался сделать это с помощью Control-C и .exit(), но ни один из них не работает.

codeRouter
  .post('/codeAPI', (req, res) => {

    console.info(req.body)
    let fileName = `johnnyFiles/${req.body.currentFile}`
    fs.writeFileSync(fileName, req.body.currentCode, (err) => {
      if (err) throw err
    })
    let id = shortid.generate()
    let fileObject = {
      fileName: req.body.currentFile,
      fileContents: req.body.currentCode,
      ID: id
    }
    data = [fileObject, ...data]
    fs.writeFileSync('data/fileData.json', JSON.stringify(data), (err) => {
      if (err) throw err
    })

    res.json(data)
    ///////////////////////////////////////////
    let nodeSpawn = spawn('node', [fileName], {
      //detached: true,
      shell: true
    })
    nodeSpawn.stdout.on('data', (data) => {
      console.info("OUTPUT", data.toString())
    })
    nodeSpawn.stderr.on('data', (data) => {
      console.info("ERRORS", data.toString())
    })
    nodeSpawn.on('exit', (code) => {
      console.info(`Child exited with code ${code}`)
      nodeSpawn.kill('SIGINT')
    })



  })

`

Почему вы выполняете .kill('SIGINT') при обработке события exit? Это событие срабатывает, когда дочерний процесс завершается. Если он не выйдет, конечно, .kill() никогда не будет вызван.

Avius 20.03.2019 20:17
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
146
1

Ответы 1

Вы можете использовать командную строку Linux.

Чтобы увидеть, как запущенные процессы используют команду, используйте:

pgrep node

Чтобы убить процесс, вы можете использовать:

kill <pid>

Или принудительно отключить

kill -9 <pid>

Или, если вы хотите убить все процессы узла

kill $(pgrep node) 

Другие вопросы по теме