【发布时间】:2019-05-13 16:18:02
【问题描述】:
在 shelljs 中,exec 函数在回调 (err, stdout, stderr) 中有 3 个参数。当promisify(shelljs.exec) 在async/await 中使用它时,我无法捕捉到stderr?
const { promisify } = require('util'),
shellExec = promisify(shelljs.exec);
....
// in the function
try {
variableName = await shellExec('some valid shell command', {});
return variableName;
}
catch (err) {
console.log(err);
}
如果 shelljs exec 返回代码 0 即有效响应,它可以正常工作,但是当命令无效时,它返回 1。
我无法获得stderr。
【问题讨论】:
-
等待的 promise 的返回值应该有一个带有
stderr的对象。阅读此2ality.com/2017/05/util-promisify.html 第 3 点 -
这正是我想知道的,但它并没有解决我的问题。问题在于 shelljs,如果 shell 出错,如果去 catch 块而不是 then。
标签: javascript node.js callback async-await try-catch