Firebase FunctionsでPuppeteerを動かす
Firebase Functions上でPuppeteerを動かしたかったので対応した。
デフォルトだとメモリ割り当てが256MBになっておりメモリ不足でPuppeteerが起動しないため、512MB以上に設定する必要がある。
import puppeteer from 'puppeteer'
import * as functions from 'firebase-functions'
let browser: puppeteer.Browser | null = null
const runtimeOpts: functions.RuntimeOptions = {
timeoutSeconds: 60,
memory: '512MB',
}
const puppeteerTest = functions
.runWith(runtimeOpts)
.https.onRequest(async (req, resp) => {
browser = await puppeteer.launch({
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'-–disable-dev-shm-usage',
'--disable-gpu',
'--no-first-run',
'--no-zygote',
'--single-process',
'--lang=en',
],
headless: true,
})
const page = await browser.newPage()
await page.goto('http://example.com', {
waitUntil: 'networkidle2',
})
// DOM操作など
await browser.close()
resp.send({
message: 'ok'
})
})
export default puppeteerTest