CursorでError loading webviewが出たけど再起動で直った

  • Cursor
  • Troubleshooting

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

Cursorで画像ファイルを開いたところ、画像が表示されずに次のエラーが出た。

Error loading webview: Error: Could not register service worker: InvalidStateError: Failed to register a ServiceWorker: The document is in an invalid state..

結論を先に書くと、Cursorを再起動したら直った。大した話ではないけれど、同じエラーが出たときにすぐ対処できるよう書いておく。

何が起きたか

画像ファイルを開いたら、画像が表示されずにエラーが出た。テキストファイルは普通に開けていた。

CursorはVS Codeのフォークである。VS Codeでは、画像のプレビューは組み込み拡張機能(Media Preview)のカスタムエディタで表示されていて、このカスタムエディタはWebviewの上で動いている。だから、テキストエディタは問題なく使えるのに、画像を開いたときだけエラーになるという症状になる。

Webviewは読み込みの途中でService Workerを登録する。今回はその登録が InvalidStateError で失敗して、画像が表示されなかった。同じ仕組みを使うMarkdownプレビューや拡張機能の画面でも、同じエラーが出る可能性がある(今回は未確認)。

The document is in an invalid state は、Service Workerを登録しようとしたドキュメントが、登録できない状態になっているという意味だ。

原因

今回、原因の特定まではしていない。VS Code系のエディタでこのエラーが出るケースとして、よく挙げられる原因は次の2つだ。

  • 古いプロセスが残っていて、Webviewの状態が不整合になっている
  • Service Workerのキャッシュが壊れている

今回は再起動だけで直ったので、前者だった可能性が高いと考えている。ただし未検証の推測である。

対処方法

軽い対処から順に試すとよい。

flowchart TD
    A[画像を開くと Error loading webview が出る] --> B[Cursorを完全に終了して再起動]
    B -->|直った| Z[完了]
    B -->|直らない| C[Service Worker などのキャッシュを削除]
    C -->|直った| Z
    C -->|直らない| D[--disable-gpu で起動して切り分け]
    D --> E[特定の拡張だけで出るなら、その拡張を無効化]

1. Cursorを完全に終了して再起動する

今回はこれで直った。ここで大事なのは、ウィンドウを閉じるだけで済ませないことだ。プロセスが残っていると、起動し直しても同じ状態のままになる。

ターミナル
pkill -f Cursor

2. キャッシュを削除する

再起動で直らない場合は、Cursorを終了してからキャッシュ系のフォルダを削除する。削除するのはキャッシュだけなので、設定や拡張機能は残る。

macOSの場合:

ターミナル
cd ~/Library/Application\ Support/Cursor
rm -rf "Service Worker" Cache CachedData "Code Cache" GPUCache

Linuxの場合:

ターミナル
cd ~/.config/Cursor
rm -rf "Service Worker" Cache CachedData "Code Cache" GPUCache

Windowsの場合は、%APPDATA%\Cursor の中にある同じ名前のフォルダを削除する。

今回はこの手順まで進まなかったので、実際には試していない。

3. それでも直らない場合

  • 起動時に --disable-gpu を付けて、GPU周りが原因かどうかを切り分ける
  • 特定の拡張機能のWebviewだけでエラーが出るなら、その拡張機能を無効化して様子を見る
  • コマンドパレットから Developer: Reload Window を実行する