[puppeteer]画面をPDFにするスクリプトのエラーを回避する

環境

Windows 7 64bit
node.js: 8.11.3
puppeteer: 1.9.0

 

はじめに

最近、puppeteerの本を買いました。

例アレです。

で、サンプルのシステムを動かしたところエラーが発生してしまいました。

 

エラーが発生

下記ソースを走らせたところエラーが発生しました。

javascript


const puppeteer = require('puppeteer');

(async () => {
const TARGET_URL = 'https://yahoo.co.jp';
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(TARGET_URL);
await page.screenshot({ path: 'example.png' });

await browser.close();
})();

 

エラー

C:\puppeteer>node screenshot.js
(node:366792) UnhandledPromiseRejectionWarning: TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded
at Promise.then (C:\puppeteer\node_modules\puppeteer\lib\FrameManager.js:1230:21)
at <anonymous>
-- ASYNC --
at Frame.<anonymous> (C:\puppeteer\node_modules\puppeteer\lib\helper.js:144:27)
at Page.goto (C:\puppeteer\node_modules\puppeteer\lib\Page.js:579:49)
at Page.<anonymous> (C:\puppeteer\node_modules\puppeteer\lib\helper.js:145:23)
at C:\puppeteer\screenshot.js:10:14
at <anonymous>
(node:366792) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:366792) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

 

うん、とりあえず良く分かりません。

 

ひとまずエラーの回避方法

結局理由がわからないのですが、ヘッドレスブラウザを使用するとエラーになるみたいです。

よって、下記ソースに変更


const puppeteer = require('puppeteer');

(async () => {
 const TARGET_URL = 'https://yahoo.co.jp';
 const browser = await puppeteer.launch({
    headless: false, // ヘッドレスブラウザをオフにする
    slowMo: 50,
 });
 const page = await browser.newPage();
 await page.goto(TARGET_URL);
 await page.screenshot({ path: 'example.png' });

 await browser.close();
})();

 

これで動作するようになりました。

まとめ

 

なんとか動くようになりました。

しかし原因は分からず・・・

なにか分かったら追記します。

 

今日はこの辺でー

  • この記事を書いた人

カバノキ

印刷会社のWEB部隊に所属してます。 WEB制作に携わってから、もう時期10年になります。 普段の業務では、PHPをメインにサーバーサイドの言語を扱っています。 最近のお気に入りはJavascriptです。 Vue.jsを狂喜乱舞しながら、社内に布教中です。

-puppeteer
-, ,