2017-08-06 161 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); 
    } 
});