0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

岩手県立大学Advent Calendar 2023

Day 2

Puppeteerでold Headless deprecation warningが出た時の話

Last updated at Posted at 2023-12-01

久々にPuppeteerを使おうとしてプログラムを動かそうとしたらWarningで怒られました。

スクリーンショット 2023-11-24 10.26.36.png

こんな感じで解消できます。

Node.js 21.2.0です。headless: 'new'をつけて起動します。

const puppeteer = require('puppeteer');
// import puppeteer from 'puppeteer';

(async () => {
    const browser = await puppeteer.launch({
        headless: 'new',
    });
      
    const page = await browser.newPage();
    await page.goto('https://developer.chrome.com/');  
    await browser.close();
}
)();

とりあえず解消したい方はここまででOKです。

Chromeのヘッドレスモードの仕様変更があるよ話

近々仕様が変わるから起動方法変えたコードにしておいた方が良いよ的な警告です。

  Puppeteer old Headless deprecation warning:
    In the near future `headless: true` will default to the new Headless mode
    for Chrome instead of the old Headless implementation. For more
    information, please see https://developer.chrome.com/articles/new-headless/.
    Consider opting in early by passing `headless: "new"` to `puppeteer.launch()`
    If you encounter any bugs, please report them to https://github.com/puppeteer/puppeteer/issues/new/choose.

DeepL翻訳だとこんな感じ

  Puppeteerの古いヘッドレス非推奨の警告:
    近い将来、`headless: true`のデフォルトはChrome用の新しいヘッドレスモードになります。
    になります。詳しくは
    https://developer.chrome.com/articles/new-headless/ を参照してください。
    早めにオプトインすることを検討してください: puppeteer.launch()`に "new"`を渡すことで、早期にオプトインすることができます。
    バグに遭遇した場合は、https://github.com/puppeteer/puppeteer/issues/new/choose。

Chromeのヘッドレスモードは元々通常モードと別だったぽい

こちらのChrome公式ブログに解説が書いてましたが、以前はGooge Chromeのヘッドレスモードと通常モード(ヘッドフルモード)は別々に作られてた模様です。

Chrome v112から 新しいヘッドレスモードが使えるようになって、しばらくは後方互換もあるので両方使えるようにしてくれてる模様です。

スクリーンショット 2023-11-24 10.31.54.png
引用: https://developer.chrome.com/articles/new-headless/

現状は古いヘッドレスモードを使う時はchrome --headless=old、新しいものを使う時はchrome --headless=newのフラグをつけて使い分けできるようです。

という感じでPuppeteerから起動する際も、明示的に古いモードを使いたいって話ではなければ以下のように

    const browser = await puppeteer.launch({
        headless: 'new',
    });

と指定しましょうという話でした。

結局嬉しいのか

通常利用のChromeとヘッドレスモードもChromeで少し挙動が異なるといった場合が使い込んでいくとあったのですが、その辺が解消された(解消されやすくなった)感じだと思います。

古いモードで作ってた処理もそのうちアップデートしたいですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?