首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netlify功能在控制台日志之前未完成

Netlify功能在控制台日志之前未完成
EN

Stack Overflow用户
提问于 2021-01-26 15:46:46
回答 1查看 55关注 0票数 0

我一直在编写一个脚本,使用PDF包将从表单上传的pdf2base64转换为Base64字符串,以便上传到api.

我从上传的PDF中获取url,并将其传递到我上面提到的包中,以便将其转换为正确的格式。

我的代码看起来像这样:

代码语言:javascript
复制
const pdf2base64 = require('pdf-to-base64')

const createPayload = (name, email, pdf) {
    return {
        firstName: name,
        email: email,
        pdf: {
            name: pdf.filename,
            mimeType: pdf.type,
            fileContent: '', // This will be replaced with a base64 string
        }
    }
}

exports.handler = async function( event, context ) {

    const formData = JSON.parse(event.body).payload

    if (formData.form_name == 'pdf-form') {

        console.log("Processing PDF...")
        const submission = createPayload(formData.data)
        const pdfUrl = formData.data.resume.url

        pdf2base64(pdfUrl)
            .then( (response) => {
                const result = response;
                submission.pdf.fileContent = result;
                console.log(submission)
                return response
            })
            .catch( (error) => console.log(error))

    }

}

但是,当我运行脚本时,我的控制台只记录以下内容。

代码语言:javascript
复制
9:43:59 AM: 2021-01-26T07:43:59.806Z    608332cc-be83-4243-b986-05d6e7e5b0f0    INFO    Processing PDF...
9:43:59 AM: Duration: 71.86 ms  Memory Usage: 70 MB Init Duration: 132.10 ms    

如你所见,"Processing PDF...“之后的任何日志都不会出现。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-27 00:04:49

您需要在异步函数的上下文中使用await,以便等待pdf2base64()函数调用的结果。否则,main函数将比pdf2base64函数完成得更快。

代码语言:javascript
复制
exports.handler = async function( event, context ) {

  const formData = JSON.parse(event.body).payload

  if (formData.form_name == 'pdf-form') {

    console.log("Processing PDF...")
    const submission = createPayload(formData.data)
    const pdfUrl = formData.data.resume.url

    
    try {
      const result = await pdf2base64(pdfUrl);
      return result;
    } catch(error) {
      console.log(error);
    }
  }
}

有关异步/等待的更多信息,请访问:https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await

作为一条经验法则。如果你将你的函数标记为async,只需使用await而不是"then/catch“。也使得代码更容易阅读。如果你有更复杂的流程,就不会嵌套地狱。只是代码看起来是线性的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65897522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档