NodeJS – 将命令行输出存储为var,并通过res.send()将其返回给客户端

我目前正在使用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的值。

我已经看了其他相关的问题,但我得到的信息是零碎的。 我意识到stdout产生的对象不是一个string。 我尝试了toString()方法,但没有奏效。

因为exec是asynchronous的,所以我还在res.json中放了一个if(stdout),可能stdout在我调用console.log(stdout)的时候可能没有被写入,但是这也不起作用。

我也尝试使用产卵而不是执行无效,虽然我可能错误地使用它。 我相信我的问题的解决scheme非常简单,但我一直无法find它。 任何帮助将不胜感激!

所以事实certificate,我logging了错误的stdout,logging了正确的一个,得到了我想要的答案