GlitchでPuppeteerを使う際の注意(--no-sandbox)
- Glitch:Webサイト・APIなどをデプロイできるサービス
- Puppeteer:ヘッドレスブラウザを立ち上げてスクレイピングなどに使えるNodeライブラリ。GoogleのChrome DevToolsチームが開発してる
ローカルのNodeで開発したPuppeteer利用APIをGlitchにデプロイして起きたエラーの解消メモ
コード(失敗時)
一般的な以下のような書き方で実行すると…
const puppeteer = require('puppeteer')
(async () => {
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto('https://example.com')
await page.screenshot({path: 'example.png'})
await browser.close()
})()
エラー
次のようなエラーがログに吐き出される
UnhandledPromiseRejectionWarning: Error: Failed to launch the browser process!
No usable sandbox! Update your kernel or see https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md for more information on developing with the SUID sandbox. If you want to live dangerously and need an immediate workaround, you can try using --no-sandbox.
コード(成功時)
エラーメッセージに出ているように、--no-sandbox
オプションをつけてpuppeteer.launch()
すればOKなので
(async () => {
const browser = await puppeteer.launch({
args: ['--no-sandbox']
})
const page = await browser.newPage()
await page.goto('https://example.com')
await page.screenshot({path: 'example.png'})
await browser.close()
})()
で無事実行可能に。Glitchのディスカッションをみると、Glitchの各プロジェクトはDockerコンテナ内で実行されるためsandboxをrunできない、とのことだった
Author And Source
この問題について(GlitchでPuppeteerを使う際の注意(--no-sandbox)), 我々は、より多くの情報をここで見つけました https://qiita.com/embokoir/items/16453900b6420c993bfb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .