エラーの内容
F5を押してデバッグを開始しようとすると、VS Codeが代わりにこのエラーを表示します:
Unable to start debugging. Unexpected token in JSON at position 0
位置が0のこともあれば、47や213のこともありますが、数字はあまり重要ではありません。重要なのは、VS Codeがlaunch.jsonを解析できず、デバッガーの起動を拒否しているという点です。
原因
デバッグセッションを起動する前に、VS Codeは.vscode/launch.jsonを読み込みます。末尾のカンマや閉じられていないブラケットなど、1文字でもずれているとJSONパーサーは即座に処理を中止します。
よくある原因:
- オブジェクトや配列の最後の要素の後に付いた末尾のカンマ(最も多いケース)
- ファイル内のコメント(
// このような形式)— 標準JSONではコメントは許可されていない - 文字列を囲む引用符がダブルクォートではなくシングルクォートになっている
- 波括弧や角括弧の不足または余分な追加
- 文字列値にエスケープされていない特殊文字が含まれている
- ファイルが空または途中で切れている — 「position 0」エラーの典型的なケース
修正手順
ステップ1 — launch.jsonを直接開く
コマンドパレット(Ctrl+Shift+P / Cmd+Shift+P)を開いてOpen launch.jsonを実行するか、エクスプローラーパネルで.vscode/launch.jsonに直接移動してください。どちらか速い方で構いません。
ステップ2 — 問題パネルを確認する
VS Codeには組み込みのJSONバリデーターがあります。launch.jsonをアクティブなファイルにした状態で、問題パネル(Ctrl+Shift+M)を開くと、次のような内容が表示されます:
Trailing comma [json(trailingComma)]
Comments are not permitted in JSON [json(jsonc)]
エラーをクリックすると、VS Codeが問題のある行に直接ジャンプします。これだけで80%のケースは解決します。
ステップ3 — よくある問題を修正する
末尾のカンマ(最も頻繁)
誤った例:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/index.js", // ← ここに末尾のカンマがある
}
]
}
正しい例:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/index.js"
}
]
}
JSON内のコメント
標準JSONにはコメント構文がありません — これは絶対的なルールです。コメントを削除してください:
// 誤った例
{
"version": "0.2.0", // これはスキーマバージョン
...
}
// 正しい例
{
"version": "0.2.0",
...
}
注意点: VS Codeは内部的に自身の設定ファイルにJSONC(コメント付きJSON)を使用しています。launch.jsonが誤った言語モードに関連付けられている場合、通常は問題ないはずのコメントもエラーを引き起こします。右下のステータスバーを確認してください — JSONではなくJSON with Commentsと表示されているはずです。必要に応じてクリックして変更してください。
シングルクォート
// 誤った例
{
'version': '0.2.0'
}
// 正しい例
{
"version": "0.2.0"
}
対応していないブラケット
任意の{または[をクリックすると、VS Codeが対応する閉じブラケットをハイライト表示します。ファイルを上から下に確認し、対応する閉じブラケットがないものを見つけてください。
ステップ4 — 外部ツールで検証する
問題パネルに何も表示されないにもかかわらずエラーが続く場合、ファイルに不可視文字やエンコードの問題があり、VS Codeのバリデーターが見逃している可能性があります。ファイルの内容をToolCraftのJSON Formatter & Validatorに貼り付けてみてください — すべてブラウザ内で動作し(アップロードは一切なし)、正確な行番号と文字位置を表示してくれます。目でファイルを読み通すより格段に速いです。
ステップ5 — launch.jsonをゼロから作り直す
ファイルが壊れすぎていて、1行ずつ修正する価値がない場合もあります。そのときはゼロから始めましょう:
# 壊れたファイルを削除する
rm .vscode/launch.json
次に実行 → 構成の追加に移動してください。VS Codeがプロジェクトの種類に合った有効なlaunch.jsonテンプレートを生成します。実際に必要なカスタマイズだけを追加し直してください — それ以上は不要です。
ステップ6 — BOM文字を確認する
「Position 0」というエラーは、BOM(バイトオーダーマーク)の赤信号です — 一部のエディターがファイルの先頭に無音でに追加する不可視文字で、VS Codeでは見えませんがJSONの解析を即座に破壊します。ステータスバーに表示されているエンコードを確認してください:UTF-8 with BOMではなくUTF-8と表示されているはずです。
削除するには:コマンドパレット → ファイルのエンコードの変更 → エンコードを指定して保存 → UTF-8(BOMなし)を選択してください。
修正の確認
- 編集後に
launch.jsonを保存する。 - 問題パネルでそのファイルのエラーがゼロになっていることを確認する。
- F5を押す — モーダルエラーなしにデバッガーが起動するはずです。
- デバッグコンソールパネルが開き、プログラムの出力が表示される。
再発防止
- 手入力ではなく「構成の追加」を使う。 実行メニューの構成の追加オプションを使うと、有効なJSONスニペットが直接挿入されます — タイプミスもカンマの付け忘れもありません。
- CIでのリント。
launch.jsonをバージョン管理に含めている場合は、CIのステップでjq . .vscode/launch.jsonを実行してください。JSONエラーがあると0以外で終了するため、壊れた設定がリポジトリに入り込むことを防げます。 - 保存時のフォーマットを有効にする。 設定 → Format On Saveを検索 → 有効にする。構造的なエラーは修正されませんが、保存時に末尾のカンマをすぐに検出できます。
- JSONC言語モードを維持する。
launch.jsonでは、ステータスバーに常にJSON with Commentsと表示されているべきです(プレーンなJSONではなく)。これによりコメントが使えるようになり、デバッグ設定プロパティのIntelliSenseも有効になります。 - バリデーターをすぐ使えるようにしておく。 ToolCraftのJSON Formatterをブックマークしておきましょう — 手動で編集した設定ファイルをすばやく検証する最も手っ取り早い方法です。

