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

childProcess.output luôn eq [null, null, null]Làm thế nào để đọc child_process.spawnSync stdout với tùy chọn stdio 'kế thừa'

process.stdout.write móc không cho tôi bất kỳ đầu ra

+0

Bạn đã tìm thấy giải pháp nào cho điều này chưa? Tôi có cùng một vấn đề, tôi cần phải sử dụng ''inherit'' để giữ hiển thị tiến trình nhưng tôi không thể móc' stdout.write' hoặc lắng nghe sự kiện 'data' ... –

+0

@FranDios Cách giải quyết của tôi là sử dụng đường ống để bắt đầu ra quá trình 'stdio: [0, isOutputNeeded? 'pipe': 1, 2], ' –

Trả lời

6

Nếu bạn không sử dụng 'pipe' thì childProcess.output sẽ không chứa đầu ra.

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

Đây là loại được chỉ định trong documentation for child.stdout và các nơi khác, nhưng nó không hoàn toàn rõ ràng. (Bằng mọi cách, nếu bạn muốn thấy nó được cải thiện, hãy mở yêu cầu kéo đối với the Node.js repo.)

+0

Bằng cách này tôi sẽ bỏ lỡ tiến trình child_process hiển thị. Điều quan trọng đối với tôi. –

Các vấn đề liên quan