WebView2 コントロールで実行されるスクリプトをデバッグするには、Visual Studio Code を使用します。
詳細な内容:
- はじめに
- launch.jsonファイルを作成する
- コードをデバッグする
- 対象 WebView2 のデバッグ
- 実行中のプロセスをデバッグする
- デバッグ トレース オプション
- Office アドインをデバッグする
- WebView2 WinUI 2 (UWP) アプリをデバッグする
- WebResourceRequested イベントまたは仮想ホスト名マッピングを使用したソース マップ
- デバッガーのトラブルシューティング
- 関連項目
概要
WebView2 コントロールで実行されるスクリプトをデバッグするには、Visual Studio Code を使用します。
Visual Studio Code には、ブラウザーのデバッグ用のデバッガーが組み込まれています。 VS Code でのブラウザーのデバッグを参照してください。
launch.jsonファイルを作成する
コードをデバッグするには、プロジェクトに launch.json ファイルが必要です。
launch.json ファイルは、Visual Studio Code デバッガーを構成およびカスタマイズするためのデバッガー構成ファイルです。 デバッガーを構成するために必要なプロパティの 1 つに、 request プロパティがあります。
requestには、launch と attach の 2 種類があります。
次のコードは、(アプリの実行中のインスタンスにデバッガーをアタッチするのではなく) Visual Studio Code からアプリの起動を示しています。 これを行うには、アプリを事前にビルドしておく必要があります。 プロジェクトにlaunch.json ファイルがない場合は、現在のプロジェクトの .vscode サブフォルダーに新しいlaunch.json ファイルを作成し、次のコードを貼り付けます。
"name": "Hello debug world",
"type": "msedge",
"port": 9222, // The port value is optional, and the default value is 9222.
"request": "launch",
"runtimeExecutable": "C:/path/to/your/webview2/app.exe",
"env": {
// The following variable is needed when the "runtimeExecutable" property is set.
// The port number below must match the value of the "port" property above.
"WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS": "--remote-debugging-port=9222"
// Customize for your app location.
"Path": "%path%;e:/path/to/your/app/location; "
},
"useWebView": true,
// The following two lines set up source path mapping, where "url" is the start page
// of your app, and "webRoot" is the top-level directory containing all your code files.
"url": "file:///${workspaceFolder}/path/to/your/toplevel/foo.html",
"webRoot": "${workspaceFolder}/path/to/your/assets"
レジストリ値の使用
WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS 環境変数を設定する代わりに、レジストリ キー Computer\HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments の下のレジストリにデータが--remote-debugging-port=9222<myApp.exe>という名前の新しいレジストリ値を追加すれば、デバッガーが適切なポートを検索できるようになります。 詳細については、「 WebView2 ブラウザー フラグ」を参照してください。
渡されるコマンドライン URL パラメーター
Visual Studio Code のソース パス マッピングに URL が必要になったため、アプリの起動時に url コマンド ライン パラメーターを受け取るようになりました。 必要に応じて、 url パラメーターは無視しても問題ありません。
コードをデバッグする
ソース コードにブレークポイントを設定するには、コード行をクリックして F9 キーを押します。
[ 実行 ] タブで、ドロップダウン メニューから起動構成を選択します。
[ Start Devaging] (起動構成) ドロップダウン リストの横にある緑色の三角形をクリックします。
デバッグ出力とエラーを表示するには、 デバッグ コンソールを開きます。
対象 WebView2 のデバッグ
一部の WebView2 アプリでは、複数の WebView2 コントロールを使用する場合があります。 この状況でデバッグする WebView2 コントロールを選択するには、ターゲット WebView2 デバッグを使用できます。
launch.json を開き、次のアクションを完了して、ターゲット WebView2 デバッグを使用します。
useWebviewパラメーターがtrueに設定されていることを確認します。urlFilterパラメーターを追加します。 WebView2 コントロールが URL に移動すると、urlFilterパラメーター値を使用して、URL に表示される文字列を比較します。
"useWebview": "true",
"urlFilter": "*index.ts",
// Options for "urlFilter":
// Match any url that ends with "index.ts":
"urlFilter": "*index.ts",
// Match any url that contains "index" anywhere in the URL:
"urlFilter": "*index*",
// Explicitly match a file named "index.ts":
"urlFilter": "file://C:/path/to/my/index.ts",
アプリをデバッグするときは、レンダリング プロセスの最初からコードをステップ実行する必要がある場合があります。 サイトで Web ページをレンダリングしていて、ソース コードにアクセスできない場合は、Web ページで認識されないパラメーターが無視されるため、 ?=value オプションを使用できます。
2 つの WebView2 コントロールを同時にデバッグできない
URL で最初の一致が見つかると、デバッガーは停止します。 CDP ポートはすべての WebView2 コントロールによって共有され、1 つのポート番号を使用するため、2 つの WebView2 コントロールを同時にデバッグすることはできません。
実行中のプロセスをデバッグする
実行中の WebView2 プロセスにデバッガーをアタッチする必要がある場合があります。 これを行うには、 launch.json で request パラメーターを更新し、その値を attach に変更します。
"name": "Hello debugging world",
"type": "msedge",
"port": 9222,
"request": "attach",
"runtimeExecutable": "C:/path/to/your/webview2/myApp.exe",
"env": {
"Path": "%path%;e:/path/to/your/build/location; "
}
WebView2 コントロールのデバッグを許可するには、WebView2 コントロールで Chrome 開発者プロトコル (CDP) ポートを開く必要があります。 デバッガーを起動する前に、CDP ポートが開かれている WebView2 コントロールが 1 つだけであることを確認するようにコードを作成する必要があります。
また、デバッガーが適切なポートを検索できるように、Computer\HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments の下に新しい REGKEY <myApp.exe> = --remote-debugging-port=9222を追加する必要があります。 このレジストリ キーを追加するには:
Windows ロゴ キーを押して、レジストリ エディターを検索します。 レジストリ エディター アプリを開き、[はい] をクリックして編集を許可します。
左側のフォルダー ツリーで、
HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArgumentsを展開してみます。そのパスの
\Edge\WebView2\AdditionalBrowserArguments部分が存在しない場合は、次のようにこれら 3 つの入れ子になったサブフォルダーを作成します。\Edgeサブフォルダーを作成するには: フォルダー ツリーでHKEY_CURRENT_USER\Software\Policies\Microsoftフォルダーを右クリックし、[新規] をポイントして、[キー] を選択します。Microsoftフォルダーの子 (最初はNew Key #1という名前) にフォルダーが追加されます。New Key #1フォルダーを右クリックし、[名前の変更] を選択します。 新しいキーの名前にEdgeを入力します。前の手順と同様に、
\WebView2サブフォルダーを作成します。前の手順と同様に、
\AdditionalBrowserArgumentsサブフォルダーを作成します。これでツリーが
HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArgumentsに展開されます。
AdditionalBrowserArgumentsフォルダーを右クリックし、[新規] をポイントして、[文字列値] を選択します。 [名前] 列で [New Value #1] を右クリックし、[名前の変更] を選択して、アプリの実行可能ファイルのファイル名 (myApp.exeなど) を入力します。[ 名前 ] 列で、
myApp.exeなどの実行可能ファイル名を右クリックし、[ 変更] を選択します。 [ 文字列の編集 ] ダイアログが開きます。[ 値のデータ] テキスト ボックスに、
--remote-debugging-port=9222を入力します。
[OK] ボタンをクリックし、レジストリ キーが次のものと一致していることを確認します ([名前] 列の
.exeファイルのファイル名)。
環境変数の使用
上記のレジストリ キーを追加する代わりに、 WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS 環境変数を --remote-debugging-port=9222 に設定できます。 環境変数を設定した後にアプリケーションが起動することを確認し、アプリケーションが環境変数を継承していることを確認します。 詳細については、「 WebView2 ブラウザー フラグ」を参照してください。
デバッグ トレース オプション
デバッグ トレースを有効にするには、次のように trace パラメーターを launch.json に追加します。
-
traceパラメーターを追加します。
"name": "Hello debugging world",
"type": "msedge",
"port": 9222,
"request": "attach",
"runtimeExecutable": "C:/path/to/your/webview2/app.exe",
"env": {
"Path": "%path%;e:/path/to/your/build/location; "
},
"useWebView": true
,"trace": true // Turn on debug tracing, and save the output to a log file.
デバッグ出力をログ ファイルに保存する:
,"trace": "verbose" // Turn on verbose tracing in the Debug Output pane.
詳細トレースがオンになっている Visual Studio Code の DEBUG CONSOLE ウィンドウの出力:
Office アドインをデバッグする
Office アドインをデバッグする場合は、Visual Studio Code の別のインスタンスでアドインのソース コードを開きます。 WebView2 アプリで launch.json を開きます。 次のコードを launch.json に追加し、Office アドインにデバッガーをアタッチします。
,"debugServer": 4711
WebView2 WinUI 2 (UWP) アプリをデバッグする
過去
106.0.1370.34バージョンの WebView2 ランタイムをインストールします。Windows ロゴ キーを押してレジストリ エディターを開き、レジストリ エディターを検索します。 レジストリ エディター アプリケーションを開き、[はい] を選択して編集を許可します。
レジストリ キー
HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments--remote-debugging-pipeに設定します。 これを行うには、上記の 「実行中のプロセスのデバッグ」 セクションで説明されている手順に従います。レジストリ キーがエディターに設定されており、次の内容と一致していることを確認します。
launch.jsonファイルに新しい構成を追加します。launch.jsonを開き、次のコードを追加します。"name": "Attach to UWP App", "useWebView":{ "pipeName":"JSDebugPipe" } "request": "attach", "type": "msedge", "webRoot":"${workspaceFolder}"アプリを起動します。
[ デバッグの開始] ボタンをクリックしてプロセスにアタッチし、デバッグを開始します。
WebResourceRequested イベントまたは仮想ホスト名マッピングを使用したソース マップ
コンパイル済みコンテンツのソース コードをデバッグするには、次のようなソース マップが必要です。
- トランスパイルされた JavaScript (TypeScript や縮小された JavaScript など)。
- SASS や SCSS などのコンパイルされた CSS
WebView2 は、どちらの方法を使用しても読み込まれたコンテンツによって参照されるソース マップを読み込みません。
WebResourceRequestedイベント。 参照:- 「WebView2 アプリでのローカル コンテンツの使用」の
WebResourceRequestedイベントを処理してローカル コンテンツを読み込みます。 - 「WebView2 アプリでのローカル コンテンツの使用」での
WebResourceRequestedイベントを使用したソース マップ。
- 「WebView2 アプリでのローカル コンテンツの使用」の
仮想ホスト名のマッピング。 参照:
- 「WebView2 アプリでのローカル コンテンツの使用」で仮想ホスト名マッピングを使用してローカル コンテンツを読み込みます。
- 仮想ホスト名マッピングを使用したソース マップ [WebView2 アプリでのローカル コンテンツの使用]
デバッガーのトラブルシューティング
デバッガーを使用すると、これらのシナリオが発生する可能性があります。
ブレークポイントで止まらない
デバッガーがブレークポイントで停止せず、デバッグ出力がある場合:
この問題を解決するには、ブレークポイントが指定されたファイルが、WebView2 コントロールで使用されているファイルと同じであることを確認します。 デバッガーはソース パス マッピングを実行しません。
実行中のプロセスにアタッチできない
実行中のプロセスにアタッチできず、タイムアウト エラーが発生する場合:
この問題を解決するには、WebView2 コントロールによって CDP ポートが開かれていることを確認します。 レジストリの additionalBrowserArguments 値が正しいか、オプションが正しいことを確認します。
dotnet の場合は additionalBrowserArguments およびWin32 の場合は additionalBrowserArguments を参照してください。
関連項目
- WebView2 の使用を開始する
- WebView2Samples リポジトリ - WebView2 機能の包括的な例。
- WebView2 API リファレンス