在shelljs中,exec函数在回调(err, stdout, stderr)
中具有3个参数。在async/await
的{{1}}中使用它时,我无法捕捉到promisify(shelljs.exec)
?
stderr
如果shelljs exec返回代码0,即有效响应,则可以正常工作,但是当命令无效时,它将返回1。
我无法获得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);
}
。
答案 0 :(得分:0)
我假设您希望同时使用async / await时输出stderr的值。像这样的东西可能有用:
var shelljs = require('shelljs');
async function promiseExec(input) {
return new Promise((resolve, reject) => {
let { err, stdout, stderr } = shelljs.exec(input);
shelljs.exit(1);
if(stdout === "") reject(stderr);
resolve(stdout);
})
}
async function main () {
let result = await promiseExec('dir');
console.log(result);
}
main();