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()
});
我是 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()
});