✏️

Markdown Preview Enhanced の PDF や PNG の出力が WSL でできない?実際にハマったエラーと解決法

に公開
3

WSL × Puppeteer v22 以降 × Cursor で Markdown Preview Enhanced を動かす(2025 年版)

感謝: この記事に対して、@puppeteer/browsers インストール後に npx @puppeteer/browsers install chrome の実行が必要であることをご指摘いただいたコメントの方々、ありがとうございました。おかげで記事がより正確で実用的なものになりました。私の環境でも検証済みです。

はじめに

Markdown ファイルを PDF に簡単出力できる VS Code 拡張「Markdown Preview Enhanced(以下 MPE)」は非常に便利ですが、
WSL(Ubuntu24.04) × Puppeteer v22 以降 × Cursor という環境では、ある程度設定しないと動きません。

この記事では、実際に私がハマったポイントと、余計な設定をせずに最小限で動かす方法を紹介します。

陥ったエラーと原因・解決法

Error: Chrome executable path is not set.

原因

  • Puppeteer v22 以降は、ブラウザ(Chromium)を自動でインストールしない仕様に変更
  • さらに MPE は、Puppeteer が持つブラウザパスを自動では取得してくれない

解決策

@puppeteer/browsers で Chromium を手動でインストールし、パス(chromePath)を明示的に指定する必要があります。


Error: net::ERR_FILE_NOT_FOUND at file:///tmp/...

原因

解決策

Snap 版 Chromium は使えません。
代わりに、Puppeteer 公式の Headless Chromium(Google 公式ビルド) を使います。


最小構成で動かす方法(2025 年版)

1. Puppeteer のインストール

sudo npm install -g puppeteer

2. Puppeteer 公式の Chromium を明示的にインストール

sudo npm install -g @puppeteer/browsers
npx @puppeteer/browsers install chrome

補足: @puppeteer/browsers をインストールした後、npx @puppeteer/browsers install chrome を実行して Chrome をインストールする必要があります。初回インストール後には必ず必要な手順です。
この手順は、コメントしてくださった方からご指摘いただき追加しました。ありがとうございました。

完了すると、以下のようなパスに Chromium の実行ファイルがインストールされます。

/home/<ユーザー名>/chrome/linux-137.0.7123.0/chrome-linux64/chrome

このパスを 3.MPE にブラウザパスを指定する(Cursor 対応) で MPE の chromePath に指定します。

3. MPE にブラウザパスを指定する(Cursor 対応)

MPE のMarkdown-preview-enhanced: Chrome Pathという拡張機能の設定に、2.Chromium を明示的にインストールで得られた /home/<ユーザー名>/chrome/linux-137.0.7123.0/chrome-linux64/chrome を設定します。

おわりに

MPE × WSL × Puppeteer を使った Markdown → PDF や PNG の出力には、
少しだけ準備が必要でしたが、実際に必要だったのはこの 3 つだけです。

  • Puppeteer をインストールする
  • Puppeteer 公式の Chromium を明示的にインストールする(@puppeteer/browsersnpx @puppeteer/browsers install chrome
  • その実行パスを chromePath に設定する

この手順で、Snap などの環境依存の制約を回避しつつ、安定して PDF や PNG を出力できるようになりました。

WSL 上で MPE を使いたい人の参考になれば幸いです。

Discussion

Shinji MatsumotoShinji Matsumoto

ありがとうございます、こちらの記事に大変助けられました!

なお、私の環境では、

npm install -g @puppeteer/browsers
npx @puppeteer/browsers install chrome  # 追加部分

と、@puppeteer/browsers を入れた後に、Chrome をインストールするコマンドを実行する必要がありました。

もしかしたら私の環境だけかもしれませんが、念のため共有させてもらいます。

2
atsuki.seoatsuki.seo

僕の環境もそうだったので、@puppeteer/browsers 初回インストール後には必ず必要な手順なのではないかと感じました。

1
loviolovio

ご指摘ありがとうございます。記事に反映するのが遅くなってしまいましたが、非常に感謝しております。

2