📌

【Puppeteer】Attempted to use detached Frame の対応

に公開

問題点

Puppeteer を利用しているとAttempted to use detached Frameがたまに表示される。
中で起動しているブラウザと node.js の通信が切れてしまうと発生する。
※ ECS のコンテナで常時稼働しているみたいなプロセスで、SIGTERM が発生すると今回の対応をしても表示される

デフォルト設定だと WebSocket で通信するみたい。
ポートを通じて通信しているためか、パフォーマンスも悪いよう。

解決策

puppeteer.launch するときのオプションにpipe:trueを設定すると、stdio方式に変換される。
ネットワークを解するわけではなくなるため、パフォーマンスが良くなる。

puppeteer.launch({
    ...
    pipe: true
})

参考資料

https://pptr.dev/browsers-api/browsers.launchoptions#pipe

https://github.com/puppeteer/puppeteer/issues/12423#issuecomment-2107443473

GitHubで編集を提案

Discussion