亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

node child_process如何打印到控制臺?

node child_process如何打印到控制臺?

夢里花落0921 2018-09-07 09:11:06
在項目中想使用gulp+webpackwebpack用來打包jsgulp用來復制合并css等資源現在在開發中想gulp和webpack都啟動watch模式,監聽變化,我用child_process啟了一個子進程來執行webpack -w,gulp.task('dev', function() {     gulp.watch('./public/css/*.css', function(e) {        var path = e.path;         gulp.src(path).pipe(gulp.dest(dist + 'public/css'));     });         var child_process = require('child_process');         var workerProcess = child_process.exec('node node_modules/webpack/bin/webpack.js', function() {             console.log(arguments);     })     workerProcess.on('exit', function() {        console.log('exit child');     }) });webpack配置文件已經設置watch: true了,現在能實現我的要求,但是每次webpack打包的信息沒法輸出到控制臺了,誰能指導一下嗎?對Node不太懂。
查看完整描述

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上面這種便捷用法。

查看完整回答
反對 回復 2018-10-14
  • 1 回答
  • 0 關注
  • 1884 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號