NodeJS - child_process.execSync... предоставляет пользовательские функции stdio (stdin, stdout, stderr), которые также являются "наследуемыми"

91
10

Учитывая функцию c() ниже, я бы хотел, чтобы stdout был унаследован, каковым он является сейчас.

Код ниже должен быть возможен для прямого вызова.

Обратите внимание, что я хочу execSync, а не exec асинхронно.

Тем не менее, я хотел бы также иметь возможность читать данные, которые передаются на консоль.

Но не в состоянии обернуть передаваемые данные и сначала что-то с ними сделать, прежде чем пускать их в родительский процесс (окно терминала).

Я пытался создать WriteStream, надеясь, что смогу предоставить функцию, в которой данные могут быть проанализированы и затем переданы в родительский процесс, но это оказывается трудным.

function c(command, options) {
options || (options = {}); var mo = options.mo || (options.mo = {});

mo.stdin || (mo.stdin = process.stdin )
mo.stdout || (mo.stdout = process.stdout)
mo.stderr || (mo.stderr = process.stderr)

options.stdio || (options.stdio = [mo.stdin, mo.stdout, mo.stderr]);

var child_process = require('child_process');

try {
var out = child_process.execSync(command, options);

console.log(111, out); // Always null
}
catch(e) {
console.log(222, 'Error occured: ', e);
}

}

var command_1 = 'mvn clean install -DskipTests';
var command_2 = 'mvn --version';
var command_3 = 'passwd';

c(command_3, {
mo : {
// stdout : require('fs').createWriteStream("abcdef")
}
});

спросил(а) 2019-01-25T15:49:00+03:00 1 год, 8 месяцев назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема