Как устранить ошибку “Цель закрыта” с помощью NodeJS и Puppeteer в контейнере docker?

#node.js #docker #puppeteer

#node.js #docker #puppeteer

Вопрос:

я пытаюсь сгенерировать PDF-файл с помощью puppeteer, который настраивается внутри docker. однако я продолжаю получать ошибку

Ошибка в pdf ::—> Ошибка: ошибка протокола (страница.навигация): Цель закрыта. в /usr/src/filemanager/node_modules/puppeteer/lib/Connection.js:183:56

 const getPdfFile = async (url) => {
  let browser = null
  let result

  try {
    browser = await puppeteer.launch({
      args: ["--no-sandbox", "--disable-dev-shm-usage"],
      headless: true
    })
    const page = await browser.newPage()
    await page.setDefaultNavigationTimeout(0);
    await page.goto(url, { waitUntil: 'networkidle2' })
    await page.emulateMediaType('screen')
    result = await page.pdf(defaultPrintOptions)
  } catch (error) {
    console.log('Error in pdf ::--->', error)
    throw error
  } finally {
    if (browser !== null) {
      await browser.close()
    }
  }

  return result
}
 

это работает в среде моего локального компьютера с той же настройкой docker, однако сбой при развертывании в облаке.
я не понимаю, какую ошибку я здесь совершаю.

package.json —> «puppeteer»: «^ 2.1.1» контейнер docker ->

 nikolaik/python-nodejs:python3.7-nodejs12-stretch
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - 
    amp;amp; sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' 
    amp;amp; apt-get update 
    amp;amp; apt-get install -y google-chrome-unstable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 libxtst6  
    --no-install-recommends 
    amp;amp; rm -rf /var/lib/apt/lists/*