2017-08-06 156 views
0

我使用exec命令來通過安裝child_process節點模塊來理解它。下面是代碼行。 通過查看輸出,它顯示我的exec()未按預期工作。exec()命令沒有在標準輸出中顯示輸出

exec.js

console.log('1') 
var exec = require('child_process').exec; 
console.log('2'); 
exec('node -v', function (error, stdout, stderr) { 
    console.log('stdout', +stdout); 
    console.log('stderr', +stderr); 
    if (error !== null) { 
     console.log('exec error: ', + error); 
    } 
}); 

的package.json

{ 
    "name": "exec", 
    "version": "1.0.0", 
    "description": "", 
    "main": "exec.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "", 
    "license": "ISC", 
    "devDependencies": { 
    "child_process": "^1.0.2" 
    } 
    } 

當運行命令node exec.js它顯示以下輸出如下

1 
2 
stdout NaN 
stderr 0 

回答

1

在您的每個console.log函數調用都在每個變量名前面有一個+。這會嘗試將變量的值轉換爲數字。第5,6和8行刪除+,代碼應按預期運行。

此外,最好使用console.error何時輸出標準錯誤。

console.log('1') 
var exec = require('child_process').exec; 
console.log('2'); 
exec('node -v', function (error, stdout, stderr) { 
    console.log('stdout', stdout); 
    console.error('stderr', stderr); 
    if (error !== null) { 
     console.log('exec error: ', error); 
    } 
});