Событие данных не запускается для порождения child_process, когда пользовательский скрипт bash что-то отображает - PullRequest
0 голосов
/ 30 октября 2019

Я пытался вызвать пользовательский сценарий bash с помощью модуля spawn child_process из моего приложения-узла, и я хочу перехватить стандартный вывод, отраженный сценарием оболочки. Я пытался прослушать событие «данные», но ничего не помогает. Вот код: введите код здесь

const { spawn } = require('child_process');

const subprocess = spawn('.\\start_recording.sh', [], {shell:true});

subprocess.stdout.on('data', (data) => {
  data = data.toString();
  console.log(`Received chunk ${data}`);
});

Я даже пытался использовать:

subprocess.stderr.pipe(process.stderr, {end: false});
subprocess.stdout.pipe(process.stdout, {end: false});

Все еще событие 'data' не прослушивается.

Вот мой bashскрипт start_recording.sh :

#!/bin/bash
echo something

1 Ответ

0 голосов
/ 30 октября 2019

в соответствии с документацией nodejs, child_process является асинхронным, поэтому попробуйте обернуть его в асинхронную функцию. https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

попробуйте это:

async ()=>{
    let spawExample = await subprocess.stdout.on('data', (data) => {
      data = data.toString();
      console.log(`Received chunk ${data}`);
      return data
    });

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...