Вывод потока stdout в консоль от child_process.execSync

316
25 июля 2017, 20:35

Столкнулся с необходимостью запуска внешнего процесса из нодовского скрипта. Допустим внешний процесс запускается командой

 yarn install

В нодовском модуле child_process есть неблокирующий метод exec, с помощью коллбэка которого я могу видеть ошибки

exec('yarn install', function (error, stdout, stderr) {
  if (error) console.log(error.code)
})

Однако, мне нужно, чтобы операция выполнялась синхронно, для чего я использую execSync,

execSync('yarn install')

который уже не выводить в консоль никаких сообщений.

Как получить поток вывода?

Answer 1

Функция execSync позволяет задавать произвольные потоки stdin, stdout, stderr через параметр stdio.

Например, если вы хотите перенаправить содержимое stdout порождаемого процесса в stdout родительского процесса, то можно использовать вот такой код:

var execSync = require('child_process').execSync;
execSync('ls -l ~', {stdio: ['ignore', process.stdout, 'ignore']});

Подробнее о параметре stdio можно почитать в официальной документации.

READ ALSO
Плавная анимация с проверкой

Плавная анимация с проверкой

Есть следующая структура файлов, хочу сделать следующие - при клике на main, проверяется, если show-title (имеет свойство display:block), то ничего не делать,...

288
проблема умного фильтра в битрикс

проблема умного фильтра в битрикс

Господа, подскажите, пожалуйста

401