VSCode拡張機能開発で、作成したはずのコマンドがコマンドパレットに表示されないエラーの対処法のリスト。
自分の場合、バージョン不一致で出てこないのを何度も調べている気がするので、備忘録として残すことにした。
1. ビルド(コンパイル)が実行されていない
最もよくある原因らしい。TypeScript(.ts)の変更は、JavaScript(.js)にコンパイルしないと反映されません。
- 確認・対処法
- 一度、デバッグを停止する
- プロジェクト内の
dist
フォルダを削除 -
npm run compile
かnpm run watch
を実行し、dist
フォルダが再作成されていることを確認 - 再度デバッグを開始
2. engines
のバージョン不一致
package.json
に記載されたVSCodeのバージョンと、使用しているエディタ(VSCodeやCursorなど)のバージョンが異なると、拡張機能が正しく読み込まれません。
Cursor で拡張機能の作成をしているときや、バイブコーディングとかで package.json
をろくに確認せずに更新していると起きている印象です。
- 確認・対処法
- ヘルプのバージョン情報から確認する
- VSCodeのとCursorで確認する項目が異なる
- VSCode: Version
- Cursor: Commit
-
package.json
の"engines": { "vscode": "..." }
の値を、確認したバージョンと互換性のある範囲(例:^1.88.0
)に修正する
3. コマンドIDの不一致
package.json
で定義したIDと、extension.ts
で登録するIDが異なっていると、コマンドは認識されません。
- 確認・対処法
- 下記2つの文字列が完全に一致しているか、タイポや余分なスペースがないかを確認します:
-
package.json
内の"command": "link-board.show"
-
src/extension.ts
内のvscode.commands.registerCommand('link-board.show', ...)
-
- 下記2つの文字列が完全に一致しているか、タイポや余分なスペースがないかを確認します:
参照リンク