page.goto (puppeteer) 在打开它导航到的同一个 url 时不会停止调用自身

page.goto (puppeteer) does not stop calling itself when opening the same url it is navigating to

我正在尝试使用 puppeteer 将 html 网页转换为 pdf 文件。它正在将 html 网页转换为 pdf 文件,但问题是,page.goto 在其工作完成后没有停止。发生这种情况时,我 运行 这个本地主机服务器的终端变得有点无响应。我也在 heroku 上部署了它,但是当我访问 url 时,服务器以错误代码 503 响应我并且它没有在那里转换为 pdf。

let printPDF = async () => {
  try {
    const browser = await puppeteer.launch({ headless: true});
    const page = await browser.newPage();
    await page.goto('http://localhost:3000/preview')
    await page.pdf({ format: 'A4' , path: `${__dirname}/contact.pdf`, printBackground: true});

    await page.close();
    await browser.close();
    console.log("repeat") //logging to see its repetition
  }

  catch (error) {
    await page.close();
    await browser.close();
  }
}

getReviewPage = ((req, res) => {
    printPDF()
    res.sendFile(`${__dirname}/form.html`)
})

app.route('/preview').get(getReviewPage);

由于printPDF是一个返回Promise的异步函数,你需要等待它完成,以then为例:

const getReviewPage = (req, res) => {
  printPDF().then(() => res.sendFile(`${__dirname}/form.html`)
}