如何解决执行命令
我正在尝试创建一个包含一些.txt文件的档案,然后我要下载该档案。请参见下面的代码:
async function archiveAndDownload(res) {
const bashCommand = ...
const archive = ...
exec(bashCommand,(err,stdout,stderr) => {
if (err && err.code != 1) {
console.log(err);
res.status(500).json({ error: `Error.` });
return;
} else {
if (stderr) {
console.log(stderr);
}
}
});
res.status(200).download(archive,async (err) => {
if (err) {
console.log("Cannot download the archive " + err);
} else {
fs.unlink(archive);
}
});
}
async function getX(req,res) {
try {
await archiveAndDownload(res);
} catch (err) {
console.log("Error: " + err);
}
}
尝试从Postman进行测试时,出现此错误:
无法下载存档错误:请求已中止
我该如何解决?谢谢您的时间!
(作为一个补充说明,如果我尝试将下载操作移至else
的exec内,则可以,但是我想有2个单独的代码块)
解决方法
我知道了。
问题出在getX
函数上。可悲的是,我忘了最后总是有一个finally
块,该块总是执行。
整个getX
函数是:
async function getX(req,res) {
try {
await archiveAndDownload(res);
} catch (err) {
console.log("Error: " + err);
} finally {
res.end(); // <<<< this was my problem,I removed the whole finally block
}
}
对不起,我没有在本文中编写整个功能,但是很好,我终于明白了。希望这会帮助某人。因此请注意:在res.render
之后,切勿res.send
,res.end
,res.download
等。您需要先完成下载。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。