page.goto (puppeteer) не перестает вызывать себя при открытии того же URL, на который он перемещается - PullRequest
1 голос
/ 19 марта 2020

Я пытаюсь преобразовать веб-страницу html в pdf-файл с помощью puppeteer. Он преобразует веб-страницу 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);

1 Ответ

0 голосов
/ 19 марта 2020

Поскольку printPDF - это асинхронная c функция, возвращающая Promise, вам нужно дождаться, пока она завершится sh, с then, например:

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