res.download 错误请求在大型 zip 文件 express、fast-csv、zip 上中止

问题描述

我正在使用 fast-csv 将数据从 mongodb 转换为 CSV 格式,然后将其保存到产品文件夹中,其中还存在所有横幅图像。因此,我正在压缩包含所有横幅图像和 CSV 文件的产品文件夹,并返回带有 res.download 的 zip 文件作为 API 调用的响应。

以下代码只包含必要的部分。

import * as csv from "fast-csv";
const ws = fs.createWriteStream("products/file.csv");

 csv
    .write(data,{
        headers: [
          "_id","name","description","banner",],})
      .on("finish",function () {
        // console.log("Write to csv successfully!");
      })
      .pipe(ws)
      .on("close",async function () {
        try {
          if (!fs.existsSync("tmp")) {
            fs.mkdirsync("tmp");
          }
          await zipDir("products","tmp/zipfile.zip");
          res.download("tmp/zipfile.zip","products.zip",async function (err) {
            if (err) {
              console.error(err);
            }
          });
        } catch (error) {
          console.error(error);
        }
      });

代码在产品较少且 zip 文件较小时有效,但对于较大的 zip 文件失败并出现错误

Error: Request aborted
    at onaborted (/home/user/project/node_modules/express/lib/response.js:1025:15)
    at Immediate._onImmediate (/home/user/project/node_modules/express/lib/response.js:1067:9)
    at processImmediate (internal/timers.js:461:21) {
  code: 'ECONNABORTED'

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)