Javascript exec() - 一个通用函数,exec's 并返回 stdout, stderr



我是JS的新手,在熟悉JS的过程中,我正在努力完成一项非常基本的任务。我想创建一个简单的run(cmd(函数,该函数将接收一个带有命令的字符串,并返回一个包含stderr和stdout的对象。

根据我的发现,我需要使用exec或spawn,但我很难将在线示例转换为返回函数:

const { exec } = require("child_process");
let run(cmd) = exec(cmd, (error, stdout, stderr) => {
ret = {
out: "",
err: "",
msg: ""
}
if (error) {
ret.msg = error.message;
}
if (stderr) {
ret.err = stderr;
}
ret.out = stdout;
return ret;
});

out = run("ls -al");
console.log(out);

这不起作用,我可能在的多个层面上犯了错误

更新:我发布的代码片段不起作用,没有输出,只有错误。我发布它是因为它非常简单明了地展示了我想要实现的目标。如果我需要为其他事情放弃exec((,我很乐意听到建议。

exec((是一个基于回调的函数,如果不承诺exec(。你正在从它自己的一个函数返回。

这甚至不是函数的正确语法。你可能想做这样的事情:

let run = (cmd, callback) => {
exec(cmd, (e, so, se) => {
// do stuff with the e, so, and se
callback(e, so, se);
});
};
run('ls', (e, so, se) => {
// at this point you might just as well use exec()
});

最新更新