Chromeデバッガー拡張機能を使用して、Visual Studio CodeでTypeScriptコードをデバッグしようとしていますが、ブレークポイントで「Unverified breakpoint」メッセージが表示され、ブレークポイントで実行が停止しません。
これが私のlaunch.jsonファイルです。
{
linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:4200",
"sourceMaps": true,
"webRoot": "${workspaceFolder}"
}
]
}
アプリのバージョン:
この問題を解決する方法に関する他の提案はありますか?
私はついに間違ったことを見つけました:
「$ {workspaceFolder}」の定義を読むと、次のように表示されます。
vS Codeで開かれたフォルダーのパス
私の間違い:
Windowsでの私のプロジェクトへの道は次のとおりでした:C:\Users\myusername\Documents\VSCode\Source\ProjectName
Visual Studio Codeを使用して、Source
フォルダーを開いており、Integrated Terminal
で 'ProjectName'にディレクトリ(cd ProjectName)コマンドを変更する必要が常にありました。これにより、Source
フォルダーではなく、ProjectName
フォルダーに.vscode folder and launch.json file
フォルダーが作成されます。
上記の間違いは、${workspaceFolder}
がSource
フォルダーを指しているのではなく、AngularコンポーネントがなかったProjectName
フォルダーを指していたという事実につながります。
修正:
Visual Studio Codeで、フォルダーC:\Users\myusername\Documents\VSCode\Source\ProjectName
を開き、そのディレクトリにlaunch.json
をセットアップします。
「未確認のブレークポイント」問題に対する私のソリューション。
「構成の追加」オプションを使用してVSCで作成されたデフォルトの.vscode/launch.jsonは、これに似ています(ポートを8080から4200に変更しました)。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.Microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}"
}]
}
以下の項目を追加すると、「未確認のブレークポイント」に関する問題が解決します。
"sourceMapPathOverrides": {
"*": "${webRoot}/*"
}
完全で機能する.vscode/launch.json:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.Microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}",
"sourceMapPathOverrides": {
"*": "${webRoot}/*"
}
}]
}
追加できる追加アイテムがいくつかあります。
"breakOnLoad": true,
"sourceMaps": true,
ただし、私の場合、問題を解決するためにこれらは必要ありませんでした。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.Microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}",
"breakOnLoad": true,
"sourceMaps": true,
"sourceMapPathOverrides": {
"*": "${webRoot}/*"
}
}]
}
上記の答えはおそらく多くの問題を解決するでしょうが、それは私のものを解決しませんでした。私のものはもっと単純で厄介な問題でした...
Launch.jsonファイルの構成設定では、大文字と小文字が区別されます。
「webRoot」エントリのスペルは正しいのですが、単語の1つに小文字のbではなく大文字のBがありました。
例:
「webRoot」:「$ {workspaceFolder}/My .F older」
次の名前のワークスペース内のフォルダーと一致しません。
My .f older
私はこれがそこに誰かを助けることを願っています。
私の場合、次のようにsourceMapPathOverrides
値を定義する必要がありました。
ファイルlaunch.json
(.vscode
フォルダーに含まれる):
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.Microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}",
"sourceMaps": true,
"smartStep": true,
"internalConsoleOptions": "openOnSessionStart",
"sourceMapPathOverrides": {
"webpack:///*": "${webRoot}/project/app/*"
}
}
]
}
私のソースは${workspaceFolder}/project/app
にあります。
正しい答えがたくさんあります。私の場合、これらすべての答えの組み合わせが役立ち、それを理解するのに長い時間がかかりました。これで頭痛の時間を節約できるといいので、
それを要約してみましょうstep by step私を助けた上記の答えを参照してください:
cd
プロジェクトフォルダーに移動します。cd myProject
code .
.vscode
フォルダー内のファイルを構成していることを確認してください。.vscode
フォルダーは、プロジェクトフォルダーのサブディレクトリです。src
フォルダーには、デバッグに役に立たない構成ファイルを含む.vscode
フォルダーがあります(私の場合と同様)。.vscode\launch.json
ファイルでデバッグ構成をセットアップします。
アプリケーションに適切なポートを指定していることを確認してください。私の場合はport 4200
で問題ありませんでした。
また、"webRoot"
パラメーターが正しく構成されていることを確認してください( Stig Perez からの回答を参照)。私の場合、サブフォルダーを追加する必要がありました。変数$(workspaceFolder)
で指定されたパスが何であるかを調べるには、StackOverflowで尋ねた質問を確認してください VSコード変数値の表示方法について
注:そのような構成がまだない場合は、以下を実行して追加します。デバッガのドロップダウンで、「構成の追加...」を選択し、青い「構成の追加」ボタンを押します。追加する構成として「Chromeを起動」を選択します。
設定例(launch.json
):
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}/projectsubfolder"
}]
projectsubfolder
をプロジェクト内にあるサブフォルダーに置き換えます。これは大文字と小文字が区別されることに注意してください( Michael Walsh からの回答を参照)。
次に、アプリケーションにブレークポイントを設定します。
デバッガーでアプリケーションを起動するには、VSコード内でターミナルウィンドウを開き、次のように入力します。cd projectsubfolder
npm install & ng serve
これにより、アプリケーションがコンパイルされる前に依存パッケージが解決およびダウンロードされます。コンパイルが完了するまで待ちます。
次に、デバッガーが接続されたChromeウィンドウを起動するVSデバッガーの緑色の三角形をクリックします。
注:パッケージ/依存関係が変更された場合に、毎回npm install
を実行する必要はありません。ほとんどの場合、ng serve
を実行してコードを再コンパイルおよび実行するだけで十分です。
プロジェクトフォルダーの名前を変更した後も問題が発生し、「webRoot」プロパティが「$ {workspaceFolder}」ではなく「$ {workspaceFolder}/src」を指していることが判明しました。 「Debugger for Chrome」拡張機能のアップデートの一部としてぴったりだったのかもしれませんが、アップデートを受け取っていないので、これを確認できません。
「webRoot」を更新し、ng serve
セッションを再起動し、新しいデバッグセッションを開始することでうまくいきました。これが似たようなシーンを持つ人を助けることを願っています。
Unverified breakpoint
この問題の原因は2つ見つかりました。
正しいワークスペースフォルダーを設定する が必要でした。
デバッグする前にnpm start
でWebアプリを起動する必要がありました。
私の場合、電子アプリとして実行するためのプロジェクトルートにmain.jsファイルがありました。このmain.jsファイルが削除された場合、問題は解決しました。
.vscodeフォルダーを削除して再生成する必要がありました。また、フォルダが間違ったパスを指していたので、現在のプロジェクトフォルダパスに戻す必要がありました。ありがとうございました
Webpackを介してコード分割を使用している場合、Chromeがそのモジュールをロードするまで(つまり、通常、アプリケーションのその部分に移動するとき)、ブレークポイントは「検証」されません。
私の人生で貴重な3時間を費やし、上記の回答の多くを調べた後、私の問題はphp.ini
に次の行がないことと同じくらい簡単でした。
xdebug.remote_autostart = 1
この前に、XAMPPで既にXDebugを構成していましたが、ブレークポイントがヒットしませんでした。デバッグサーバーが自動的に起動するように構成されていないというだけでした。
これが誰かの一日を救うことを願っています。
私はVSコードで開いていましたmy-app folder where client folder and server folder was launch.jsonをこれから変更する必要がありました
"webRoot": "${workspaceFolder}"
これに
"webRoot": "${workspaceFolder}\\client"
私が発見した別の答えは、遅延ロードされたモジュールに関連しています。
遅延ロードされたモジュールの一部であるコードにブレークポイントを設定したいが、ブラウザーにそのモジュールをロードしていない場合、VSコードはブレークポイントを検証するためのソースマップにアクセスできません!
したがって、デバッグする遅延ロードモジュールをロードしたときにのみブレークポイントを設定してください。
デバッグ構成に"sourceMaps": true
がなかったため、このエラーが発生していました。
私にとっての解決策は、launch.jsonファイルに次の行を追加することでした: "requireExactSource":false。この後、VSCを再起動し、動作するか試してください。
npm i
は私の部分のためにそれを修正しました。新しいフォルダー/ファイルを作成するときに、未確認のブレークポイントを取得することがありますが、通常はそれを行います。
すべてが正しく設定されているように見えても、ブレークポイントがまだヒットしていない場合、必要な変更は、提供される正確なファイル名を指定することでした。たとえば、NodeJSでは、Expressはlocalhost:3000
を指定するだけではブレークポイントで停止しませんが、localhost:3000/index.html
を指定すると期待どおりに機能しました
完全な構成:
VSCodeで開いている私のフォルダー:learningPixi
完全なフォルダーの場所(Ubuntu Linux):/home/leigh/node/pixi-tut/learningPixi
私のフォルダ構造は次のとおりです。
/home/leigh/node/pixi-tut/learningPixi/.vscode/launch.json /home/leigh/node/pixi-tut/learningPixi/public/index.html /home/leigh/node/pixi-tut/learningPixi/server.js
Launch.jsonファイルの内容:
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:3000/index.html",
"webRoot": ${workspaceFolder}/public",
"skipFiles": ["pixi.min.js"]
}
]
}
「skipFiles」も非常に有用でした。
静的ファイルでJavaScriptをデバッグするための私の(非常に基本的な)エクスプレスサーバー設定は次のとおりです。
const express = require('express');
const path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, '/public')));
app.listen(3000, () => console.log('App started on port 3000'));
また、上記のフォルダー構造に従って、index.htmlが/ publicフォルダーにあることを確認してください
HTMLファイル内からJavaScriptをデバッグする場合、VSCode内の設定に移動して、次を有効にする必要がある場合があります。
私の場合、問題は、関数が宣言されている行にブレークポイントが設定されたことでした
openDetails(data: Asset) { <-- The break point was here
this.datailsOpen = true;
this.currentAsset = data;
}
解決策:関数の本体内に移動します
openDetails(data: Asset) {
this.datailsOpen = true; <-- Move the break point here
this.currentAsset = data;
}
私の問題は、ソースマッピングが適切に構成されていないことでした。実際のTSソースがChromeデバッグ拡張機能の[ソース]タブに表示されていることを確認し、最初にブレークポイントを配置してみてください。たぶんそれは誰かを助けるでしょう。