1 回答
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
var workerProcess = child_process.exec('node node_modules/webpack/bin/webpack.js', function(error, stdout, stderr) {
if (error) {
console.error('exec error: '+error)
return
}
console.log('stdout: '+stdout)
console.log('stderr: '+stderr)
})
但是請(qǐng)注意,exec方法默認(rèn)的最大允許輸出到stdout和stderr的數(shù)據(jù)量不超過200K,如果超過了,子進(jìn)程就會(huì)被殺死。請(qǐng)注意!??!(可以改用spawn避免該問題,或者手動(dòng)設(shè)置maxBuffer),或者直接使用下面的代碼
var workerProcess = child_process.exec('node node_modules/webpack/bin/webpack.js', {})
workerProcess.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
workerProcess.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
雖然在node的文檔用法中,spwan和exec的最終回調(diào)方式有區(qū)別,但是在node的實(shí)現(xiàn)中,其實(shí)兩者的實(shí)現(xiàn)方式是一致的,exec也可以像spawn一樣使用,只不過exec在觸發(fā)stderr和stdout的data事件的時(shí)候,會(huì)把數(shù)據(jù)寫到字符串中,到執(zhí)行結(jié)束或者錯(cuò)誤退出的時(shí)候通過回調(diào)函數(shù)傳遞出來,實(shí)現(xiàn)了exec上面這種便捷用法。
添加回答
舉報(bào)
