我正在完成学校作业Node.js,并且无法正确输出输出。 res.end
部分不起作用,但res.end(stdout);
有效。为什么呢?
case "/status":
/**
* Run child process "uname -a".
*/
cp.exec("uname -a", (error, stdout, stderr) => {
if (error || stderr) {
// Do something with the error(s)
console.log("Something went wrong...", error, stderr);
}
// status route
res.writeHead(200, { "Content-Type": "application/json" });
res.end({
"uname": stdout
});
});
break;
答案 0 :(得分:1)
正如Node.js docs中所指定的,res.end
只能将字符串或缓冲区 - 或根本没有 - 作为其第一个参数。如果您希望使用它发送JSON,您必须设置内容类型(您已经完成)并对对象进行字符串化:
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify({
"uname": stdout
}));
这实际上是what Express.js does when you call res.send/res.json
on an object。