Назад | Перейти на главную страницу

Функция GCloud с Puppeteer - ошибка «Процесс завершен с кодом 16»

Возникли проблемы с поиском какой-либо документации или причины такого рода проблем. Я пытаюсь запустить сценарий браузера Chrome без заголовка, который извлекает текущую песню, воспроизводимую с kexp.org, и возвращает ее как объект JSON. Тестирование с помощью пакета NPM @ Google-clound / functions-framework действительно возвращает правильный ответ, однако при развертывании в GCloud я получаю следующую ошибку при нажатии на триггер API:

Error: could not handle the request

Error: Process exited with code 16
at process.on.code (invoker.js:396)
at process.emit (events.js:198)
at process.EventEmitter.emit (domain.js:448)
at process.exit (per_thread.js:168)
at logAndSendError (/workspace/node_modules/@google-cloud/functions framework/build/src/invoker.js:184)
at process.on.err (invoker.js:393)
at process.emit (events.js:198)
at process.EventEmitter.emit (domain.js:448)
at emitPromiseRejectionWarnings (internal/process/promises.js:140)
at process._tickCallback (next_tick.js:69)

Полный сценарий:


let browserPromise = puppeteer.launch({
  args: [
    '--no-sandbox'
  ]
})

exports.getkexp = async (req, res) => {
  const browser = await browserPromise
  const context = await browser.createIncognitoBrowserContext()
  const page = await context.newPage()

  try {
    const url = 'https://www.kexp.org/'

    await page.goto(url)
    await page.waitFor('.Player-meta')

    let content = await page.evaluate(() => {
        // finds elements by data type and maps to array note: needs map because puppeeter needs a serialized element
        let player = [...document.querySelectorAll('[data-player-meta]')].map((player) =>
        // cleans up and removes empty strings from array
        player.innerHTML.trim());
        // creates object and removes empty strings
        player = {...player.filter(n => n)}

        let songList = {
            "show":player[0],
            "artist":player[1],
            "song":player[2].substring(2),
            "album":player[3]
        }
        return songList
    });
    context.close()
    res.set('Content-Type', 'application/json')
    res.status(200).send(content)
  } catch (e) {
    console.log('error occurred: '+e)
    context.close()
    res.set('Content-Type', 'application/json')
    res.status(200).send({
      "error":"occurred"
    })
  }
}

Есть ли документация по этому типу ошибок? Он был развернут в GCloud через оболочку CLI со следующими параметрами:

gcloud functions deploy getkexp --trigger-http --runtime=nodejs10 --memory=1024mb