プログラムdeタマゴ

nodamushiの著作物は、文章、画像、プログラムにかかわらず全てUnlicenseです

これが最速!VSCodeプラグイン開発に失敗

VSCodeのプラグインを開発してみる

最近は猫も杓子もVSCodeである。嫌になる。

かくいう私もEmacsなんて最近立ち上げた記憶が無い。

補間インターフェースはEmacsの方が楽だけど、LSPとの連携の問題なのか、ユーザー数の問題なのか圧倒的にVSCodeの方が優秀である。 VSCodeはMigemoに対応してないのとか、検索置換周りが糞だけど

というわけで、VSCodeを俺色にそめてやるぜ、ということでプラグイン開発してみることにした。

公式のGET START Your First Extensionを試してみる

公式のチュートリアル があるので、試してみる。取りあえずは Node.jsが必要らしい。

  1. NVMをインストール。私はWindowsユーザーなのでNVM Windows
  2. コマンドプロンプトで nvm install lts を実行
  3. 管理者権限のコマンドプロンプトでnvm use lts (管理者権限必要ないディレクトリ指定したんだけどな)
  4. npm install -g yo generator-codeを実行
  5. yo code でテンプレートプロジェクトを作る。設定は以下。
    f:id:nodamushi:20211023074705p:plain
  6. cd hoge
  7. yarn compile
    f:id:nodamushi:20211023074831p:plain

 

node_modules/@types/node/child_process.d.ts:267:18 - error TS2304: Cannot find name 'AbortSignal'

  終
制作・著作
━━━━━
 Ⓝ●Ⓚ

ちょっと待て

最初にNVMをインストールしたが、これはNode.jsのバージョンが悪いのか?とか考えて複数のNode.jsをPCにインストールするために導入した。

NVMを使うとNode.jsのバージョンを切り替えることが出来る。

で、当初私はv16が入ってたのが悪いのかと思い、NVMでv14のLTSを導入してみたわけだ。

結果はご覧の通り。

AbortSignalはいつ追加されたんだ?

Node.jsのバージョンの問題では無いらしい。ならば型定義の問題だろう。 検索してみると、@types/nodeのglobals.d.tsに定義がある模様。

これのBlameを見ると、どうもv15で定義されている。 参考記事 を見ても、Node.jsのv15.4.0で導入されているようだ。

しかし、package.jsonを見ると@types/nodeは14.xと指定されている。なるほど、無いわけだ。

………いや、LTSはv14系なわけだし、14.xの指定であってるよね?あるぇ?

昔のバージョンだし、変なバグが入ったままになってるのかなぁ………。

yarn.lockを見ると………version 14.17.29ね。了

f:id:nodamushi:20211023084429p:plain
v14.17.29

………んんん!?5時間前っ!?

f:id:nodamushi:20211023083959p:plain

なんじゃこりゃーーーー

古いんじゃなくてか最新版過ぎてバグってた?しかも5時間とか言うタイミングで。

一度 yarn remove @types/nodeをして yarn add -D @types/node@14.17.27 としてから、 yarn compile すると………

f:id:nodamushi:20211023084855p:plain

チックショォオオオオオ

まとめ

はい

というわけで、 これが最速で@types/nodeの最新14系バージョンを使ったが為にVSCodeプラグイン開発に失敗した話でした

ちなみに、ブログ記事書きながら解決したので、原因を理解したのは10分前の午前8時45である。(元々はタイトル「これが最速!VSCodeプラグイン開発に失敗したので助けて」って書いてた)

いやー………難しい………