2020-04-07に投稿

PlaywrightでBrowser has been closedというProtocol errorが出る場合

PlaywrightはPuppetterチームだった方が作っているヘッドレス対応且つクロスブラウザのプロジェクト。Chromium、WebKit、Firefoxが使える。

WebKitで利用していたのだが、どうもサーバー上で実行させてみると下記のようなエラーが出て止まってしまった。

Protocol error (Playwright.createContext): Browser has been closed.

エラーメッセージもこれだけで、なにも分からない。

仕方がないのでPlaywrightのソースコードを見てみたところ、どうもいたるところでdebug関数を使用していることがわかった。これはnpmのdebugパッケージが使用されているもの。通常は何も出力されないが、DEBUG環境変数を指定することにより、指定されたデバッグメッセージを表示してくれるというもの。例えば下記のような感じで環境変数を指定すれば全てのメッセージを見ることができる。

DEBUG=* yarn dev

これでデバッグメッセージを見てみたところ、どうもLinux上の色んなシェアドライブラリが不足していた。とにかくエラーがなくなるまでライブラリをインストールしまくったら動くようになった。

ちなみに、かなりの数。しかもAmazon Linuxだとそもそもインストールできるのか謎のライブラリもあった。そのためUbuntuに切り替えて試したところ、数も減り、インストールもaptで全てでき改善できた。

ちなみに最初にchromium-browserをインストールしたことでだいぶ減らせたのではないかな……という気がしている。

ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, Vue.js, React, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!
ボードとは?

コメント