2017-08-06 21 views
0

child_processノードモジュールをインストールすることでexecコマンドを使用しています。下はコード行です。 出力を見ると、exec()が期待どおりに動作していないことがわかります。exec()コマンドがstdoutに出力を表示していません

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); 
    } 
}); 
関連する問題