代码之家  ›  专栏  ›  技术社区  ›  DSATH

我的lambda在代码完成之前就结束了,我不知道为什么

  •  -3
  • DSATH  · 技术社区  · 6 月前

    我的Lambda函数在所有代码运行之前就结束了。我无法在此代码中检索转换后的文件URL。为什么?

    export const handler = async (event, context) => {
      // Geth the object from S3
      const bucket = "s3fileconverterinput";
      const key = event.Records[0].s3.object.key;
    
      var file = await getObject(bucket, key);
      console.log(file);
      var filePath = "/tmp/" + key;
      fs.writeFile(filePath, file, (err) => {
        if (err) {
        } else {
          console.log("File saved successfully!");
          convertapi.convert("pdf", { File: filePath }).then(function (result) {
            console.log("Converted file url: " + result.file.url);
    
          });
        }
      });
    };
    
    1 回复  |  直到 6 月前
        1
  •  1
  •   Hugo Martinet    6 月前

    fs.writeFile 是一个异步函数。所以我认为这意味着处理程序在不等待写入函数解析的情况下结束。

    您可以:

    • 添加 await 在这个电话前面
    • 使用 fs.writeFileSync 功能