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

childProcess.output hep eq child_process.spawnSync nasıl okunur?stdout'u stdio seçeneği [null null, null,] 'devralır'

process.stdout.write kanca bana herhangi bir çıktı vermez

+0

Bu herhangi bir çözüm buldunuz mu? Bende aynı sorunu yaşıyorum, ben de “inherit” i kullanmalıyım. İlerleme durumunu koruyabilmem için stdout.write'i çağıramam ya da 'data' olayını dinleyemem ... –

+0

@FranDios Benim geçici çözümüm boru kullanmaktır işlem çıkışını yakalamak için stdio: [0, isOutputNeeded? 'pipe': 1, 2], ' –

cevap

6

'pipe''u kullanmazsanız, childProcess.output çıktısını içermez.

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', '' ] 

Bu

sorta tür başka yerde documentation for child.stdout ve belirtilen, ancak tamamen kesin değil. (Elbette, sen, o iyileştirilmesini the Node.js repo karşı bir çekme isteği açmak isterseniz.)

+0

Bu şekilde child_process progress'in görüntülenmesini kaçıracağım. Benim için önemli. –

İlgili konular