1 回答

TA貢獻1827條經驗 獲得超9個贊
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)
})
但是請注意,exec
方法默認的最大允許輸出到stdout和stderr的數據量不超過200K,如果超過了,子進程就會被殺死。請注意!??!(可以改用spawn避免該問題,或者手動設置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的最終回調方式有區別,但是在node的實現中,其實兩者的實現方式是一致的,exec也可以像spawn一樣使用,只不過exec在觸發stderr和stdout的data事件的時候,會把數據寫到字符串中,到執行結束或者錯誤退出的時候通過回調函數傳遞出來,實現了exec上面這種便捷用法。
添加回答
舉報