Javascript exec() - exec 和 returns stdout、stderr 的通用函数

Javascript exec() - a generic function that exec's and returns stdout, stderr

我是 JS 的超级新手,在熟悉它的过程中,我正在努力完成一项非常基本的任务。我想创建一个简单的 运行(cmd) 函数,它将接收带有命令的字符串,以及 return 包含 stderr 和 stdout 的对象。

根据我的发现,我需要使用 exec 或 spawn,但我无法将在线示例转换为 returning 函数:

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() 是一个 callback-based 函数,如果不承诺 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()
});