突然立ちはだかる「見えない」エラー誰もが経験することです。夜遅く、新しい機能のコードを500行ほど書き終え、デバッグを開始するために F5 を押したとき、VS Codeがこう叫びます。launch: program '/workspace/app.js' does not exist。これは実にもどかしい停止です。サイドバーには確かにファイルが存在しているのに、デバッガーはまるでそれが存在しないかのように振る舞います。
これは通常、launch.json が「幽霊」を追いかけているために起こります。もはや存在しないハードコードされたパスを指しているか、間違ったディレクトリを指しているワークスペース変数を使用しているかのどちらかです。
なぜVS Codeはファイルを見つけられないのかVS Codeは、アプリの起動方法を理解するために .vscode/launch.json ファイルに依存しています。"program" 属性は、エントリーポイントの正確なGPS座標のようなものです。/scripts フォルダの「s」が抜けているなど、パスが1文字でも間違っていれば、デバッガーはすぐに諦めてしまいます。
最も頻繁な原因は、単純なヒューマンエラーです。例えば、index.js を src/ フォルダに移動したのに設定を更新し忘れた、あるいはサブフォルダで作業しているのに ${workspaceFolder} がリポジトリの最上部を参照しているといったケースです。ハードコードされたパスも大きな罠です。C:\Users\Dev\Project のようなパスは、チームメイトが自分のマシンで実行しようとした瞬間に壊れてしまいます。
手軽な「現在のファイルを実行」による修正複雑な構成を組まずに、単一のスクリプトをテストしたいだけの時もあります。その場合は、"program" の行を ${file} 変数を使用するように書き換えます。これにより、VS Codeはプロジェクト構造を無視して、エディタタブで現在アクティブなファイルを実行するようになります。
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "現在のファイルをデバッグ",
"program": "${file}"
}
]
}
これは素早いテストには最適なショートカットです。ただし、常に server.js のような特定のエントリーポイントから開始する必要がある大規模なプロジェクトでは、あまり効果的ではありません。
堅牢な「ワークスペースパス」による修正信頼性の高いセットアップのためには、現在どのファイルを編集しているかに関わらず、デバッガーがエントリーポイントをターゲットにするように設定します。これには、${workspaceFolder} を使用してプロジェクトのルートからの相対パスをマッピングする必要があります。
Node.jsの例メインファイルが dist という名前のサブフォルダにある場合、設定は次のようになります。
"program": "${workspaceFolder}/dist/app.js"
Pythonの例Python開発者は、DjangoやFlaskのようなフレームワークを使用しているときにこの問題によく直面します。"program" が manage.py または main.py の絶対位置を指していることを確認してください。
{
"name": "Python: 現在のファイル",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/src/main.py",
"console": "integratedTerminal"
}
マルチルートワークスペースの取り扱い1つのVS Codeウィンドウで複数のプロジェクトを開いている場合、状況は少し複雑になります。マルチルートワークスペースでは、${workspaceFolder} はデフォルトで最初に開いたフォルダを指します。正確に指定するには、変数の後にフォルダ名を含めます:${workspaceFolder:my-api-service}/app.js。これにより、デバッガーがフロントエンドのフォルダ内でAPIのコードを探しに行くのを防ぐことができます。
デバッガー自体のデバッグカンマが1つ欠けていたり、余計な引用符があったりするだけで launch.json は壊れ、VS Codeは変更を完全に無視してしまいます。パスが正しいように見えるのにエラーが解消されない場合は、JSONの構文チェックを行います。
私はよく、ToolCraftの JSON Formatter & Validator を使って、これらの目に見えないエラーを見つけます。これはブラウザベースのツールで、データをどこにもアップロードせずに、末尾のカンマなどの構文の問題をハイライトしてくれます。50行もある設定ファイルを細めてタイポを探すよりもずっと高速です。

