Markdown Preview Enhanced の PDF や PNG の出力が WSL でできない?実際にハマったエラーと解決法
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 は
AppArmorによってfile://や/tmpパスのアクセスが制限される
Ask Ubuntu: How to grant /tmp access to snap chromium?を参照 - Markdown Preview Enhanced は一時的に
.htmlを/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/browsersとnpx @puppeteer/browsers install chrome) - その実行パスを chromePath に設定する
この手順で、Snap などの環境依存の制約を回避しつつ、安定して PDF や PNG を出力できるようになりました。
WSL 上で MPE を使いたい人の参考になれば幸いです。
Discussion
ありがとうございます、こちらの記事に大変助けられました!
なお、私の環境では、
と、
@puppeteer/browsersを入れた後に、Chrome をインストールするコマンドを実行する必要がありました。もしかしたら私の環境だけかもしれませんが、念のため共有させてもらいます。
僕の環境もそうだったので、@puppeteer/browsers 初回インストール後には必ず必要な手順なのではないかと感じました。
ご指摘ありがとうございます。記事に反映するのが遅くなってしまいましたが、非常に感謝しております。