首页 > 解决方案 > Decompress-zip 在这条 Express 路由中发出任何东西,为什么?

问题描述

也许我只是累了,但我不明白为什么这行不通!这是使用无服务器框架 (serverless-http) 在 AWS Lambda 上运行的快速路由。

我正在使用 Multer 处理文件上传,这似乎工作正常,我可以看到文件已上传并且可用。我从 multer 创建的 req.file 属性派生了大部分文件路径。此代码不会 console.log 在我的 cloudwatch 日志中记录任何内容,没有错误,没有完成提取,没有“在这里!!” 来自 unzipper.extract() 上的过滤器。我已经使用 fs.exists 进行了测试,以确保文件确实存在(确实存在),并且当我故意使用假文件名时,会准确地发出错误。这是怎么回事?

app.post('/incoming', upload.single('file'), (req, res) => {
  let filePath = '/tmp/'+req.file.filename
  let unzipper = new DecompressZip(filePath)
  unzipper.extract({
    path: '/tmp',
    filter: function (file) {
      console.log('IN HERE!!');
        return file.type !== "SymbolicLink";
    }
  })

  unzipper.on('error', err => {
    console.log('Error :', err);
    res.send('Error!' + err)
  })

  unzipper.on('extract', (log) => {
    console.log('Extract Completed.', log);
    let list = []
    const directoryPath = req.file.destination;
    console.log('directoryPath :', directoryPath);
    fs.readdir(directoryPath, function (err, files) {
      if (err) {
        console.log('Unable to scan directory: ' + err);
        return list.push(err)
      }
      files.forEach(function (file) {
        console.log(file);
        list.push(file)
      });
      res.send(list)
    });
  })
})

标签: node.jsexpresszipserverless-frameworkaws-serverless

解决方案


推荐阅读