【问题标题】:NodeJS - Storing command line output as a var and returning it to client via res.send()NodeJS - 将命令行输出存储为 var 并通过 res.send() 将其返回给客户端
【发布时间】:2016-04-09 21:11:01
【问题描述】:

我目前正在使用 NodeJS 开发应用程序的后端。作为我的代码的一部分,我读取文件的第一行并使用 res.json 将其发送到客户端。我的代码是这样的

var hr = 'head -n 1 ../' + req.file.path + '_hr.txt';

exec(hr, function (error, stdout, stderr) {
    console.log(hr);
    console.log(stdout);
    console.log(stderr);
    res.json({
      "heartrate": stdout
    }); 

})

但是,当我执行此操作时,我得到了

{"heartrate" : ""}

即使在后端的控制台上我看到了标准输出的值。

我查看了其他相关问题,但我得到的信息都是零碎的。我意识到 stdout 生成的对象不是字符串。我尝试了 toString() 方法,但没有奏效。

我还在 res.json 周围放置了一个 if(stdout),因为 exec 是异步的,并且在我调用 console.log(stdout) 时可能还没有写入 stdout,但这也不起作用。

我也尝试使用 spawn 而不是 exec 无济于事,尽管我可能用错了。我确信我的问题的解决方案非常简单,但我一直无法找到它。任何帮助将不胜感激!

【问题讨论】:

  • 您可以尝试先将其存储在一个变量中var output = stdout.toString(),然后console.logging output 变量,然后发送它吗?
  • 试过了,记录输出变量也显示空白
  • 哦,真是奇怪,那会不会和我的命令有关?
  • 可能是,但你说console.log(stdout) 显示正确的输出?

标签: javascript node.js post exec stdout


【解决方案1】:

事实证明我记录了错误的标准输出,记录了正确的输出并得到了我想要的答案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2019-03-17
    • 2011-12-11
    • 1970-01-01
    • 2017-04-02
    相关资源
    最近更新 更多