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

childProcess.output sempre eq [null, null, null]Come leggere child_process.spawnSync stdout con l'opzione stdio 'eredita'

gancio process.stdout.write non mi dà alcun output

+0

Hai trovato qualche soluzione a questo? Ho lo stesso problema, ho bisogno di usare ''inherit'' per mantenere la visualizzazione del progresso ma non riesco ad agganciare' stdout.write' o ad ascoltare l'evento 'data' ... –

+0

@FranDios La mia soluzione è usare la pipe per rilevare l'output del processo 'stdio: [0, isOutputNeeded? 'pipe': 1, 2], ' –

risposta

6

Se non si utilizza 'pipe', allora childProcess.output non conterrà l'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', '' ] 

Questo è sorta un po indicato nel documentation for child.stdout e altrove, ma non è priva di ogni ambiguità. (Con ogni mezzo, se vuoi vederlo migliorato, apri una richiesta pull contro the Node.js repo.)

+0

In questo modo mancherò la visualizzazione dei progressi di child_process. È importante per me –