javascript - exec() 命令未在标准输出中显示输出

标签 javascript node.js exec child-process

我使用 exec 命令来通过安装 child_process Node 模块来理解它。下面是代码行。 通过查看输出,可以看出我的 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

最佳答案

在每个 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);
    }
});

关于javascript - exec() 命令未在标准输出中显示输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45532054/

相关文章:

node.js - 来自 Node.js 的 Amazon SNS 的 CERT_UNTRUSTED 错误响应

c - 作为父进程运行子进程

c - 当我调用 vfork() 时,我可以调用任何 exec*() 函数,还是必须调用 execve()?

javascript - javascript regex exec不一致

html - 尝试覆盖输入区域中预先填充的数据

javascript - FormData 对象仅获取文件输入,而不获取其他输入,例如文本

javascript - Chrome 上出现错误 "Provisional headers are shown"

linux - linux-execve : On executing ls command - get error "ls: cannot access/etc : No such file or directory"

javascript - 如何将 php 内容放入 javascript 标记中?

javascript - 我们可以用 ES6 Generator 做哪些不能用 for 循环做的事情?