web-dev-qa-db-ja.com

stdioオプション 'inherit'を使用してchild_process.spawnSyncstdoutを読み取る方法

var childProcess = cp.spawnSync(command, args, {
    cwd: process.cwd(),
    env: process.env,
    stdio: 'inherit',
    encoding: 'utf-8'
});

childProcess.outputは常にeq [null、null、null]

process.stdout.writeフックは私に何の出力も与えません

12
nitro-n

'pipe'を使用しない場合、childProcess.outputには出力が含まれません。

var cp = require('child_process');

var command = 'echo';
var args = ['hello', 'world'];

var childProcess = cp.spawnSync(command, args, {
    cwd: process.cwd(),
    env: process.env,
    stdio: 'pipe',
    encoding: 'utf-8'
});

console.log(childProcess.output); // [ null, 'hello world\n', '' ]

これは、 child.stdout やその他の場所で示されているようなものですが、完全に明確なわけではありません。 (どうしても、改善を確認したい場合は、 Node.jsリポジトリ に対してプルリクエストを開いてください。)

10
Trott

これを進行状況の進行中の表示に使用します。

var cp = require('child_process');

var command = 'echo';
var args = ['hello', 'world'];

var childProcess = cp.spawnSync(command, args, {
    cwd: process.cwd(),
    env: process.env,
    stdio: [process.stdin, process.stdout, process.stderr],
    encoding: 'utf-8'
});

したがって、文字列'pipe'を配列[process.stdin, process.stdout, process.stderr]に置き換えます。

0
mvermand