VS Code拡張を開発していたときのこと……
突然デバッグ実行でコマンドを実行すると、「アクティブ化に失敗しました」というエラーが出て動かなくなってしまいました。
ということで戒めを込めて書いていきます。
起きたこと
HatenaBlogToolsのソースは「とりあえず作るぜ!」という挑戦的ノリから始めたので、extension.jsに全て入っているというダメパターンをしていました。
はてなブログへの投稿だけでなく、他の機能も付けたので、今後のためにもファイル分割を試みました。
すると……存在するはずのコマンドが実行できなくなりました……
状況
developブランチでは、実験用に「extension.testFunc」というコマンドを用意していました。
しかしデバッグ実行をして、コマンドを実行すると、このようなメッセージが出てきました。
これと
command 'extension.testFunc' not found
これ
拡張機能 'lis.hatenablogtools' のアクティブ化に失敗しました: Cannot find module './src/hatena-blog-util' Require stack: - C:\xxx\hatenablogtools-dev\src\hatena-blog.js - C:\xxx\hatenablogtools-dev\extension.js - c:\Users\lis\AppData\Local\Programs\Microsoft VS Code\resources\app\out\vs\loader.js - c:\Users\lis\AppData\Local\Programs\Microsoft VS Code\resources\app\out\bootstrap-amd.js - c:\Users\lis\AppData\Local\Programs\Microsoft VS Code\resources\app\out\bootstrap-fork.js。
原因
めちゃくちゃ悩んで色々検索したりしたのですが、ヒントはエラーメッセージに書かれていました。
Cannot find module './src/hatena-blog-util'
「'./src/hatena-blog-util'がないよ!」って言っている。
よくよくソースを見てみると、require()でちゃんと指定したはずが、コピペミスでやらかしていました。
同じ階層にあるファイルなので
const util = require('./hatena-blog-util');
でいいところを
const util = require('./src/hatena-blog-util');
としていました……
こういうのはちゃんと見ないとダメですね。
初歩的なことをうっかりスルーしてしまっていました……
作業完了後に、日をまたいで実行したのもあって、なんでできなくなったのか?を外的要因や設定などに頭を向けてしま行っていました。
あとがき
requireのパス指定ミスでVS Code拡張が動かなくなった話でした!
超超初歩的なことが原因でした……
こういう凡ミスが発生することは仕方ないので、ちゃんと確認をしてカバーするのが大事ですね……
Node.js(というかjavascript)歴もVS Code拡張開発歴もあまりないので、1つのモジュールでコケるコマンド実行すらコケるということを初めて知りました……
「なんかやったらコマンドがデバッグで動かん!」
となったら、今回のようなことを是非チェックしてみてください!
今後とも、はてなブログ用VS Code拡張「HatenaBlogTools」をよろしくおねがいします!
拡張についての記事はコチラ!