😭

nest-cli で NestJS プロジェクトを初期化するとVScodeで警告が出る問題の対処方法

2022/08/29に公開

はじめに

これと言った結論は出てないですが、一日悩んだ結果を投稿します。
あと、初投稿です。

前提条件

  • nodeのバージョン: v16.17.0
  • パッケージマネージャ: yarn 1.22.19
  • nest-cliのバージョン: 9.1.1
  • macOS

発生する問題

初期化したNestJSプロジェクトのデフォルトのLint設定だと、クラスデコレーターに対して@typescript-eslint/no-unused-varsの警告が出ます。

再現方法

@nestjs/cli@9.1.1 で以下のコマンドを実行し、プロジェクトを初期化します。

nest new new-project

そして、そのプロジェクトをVScodeで開いて、src/app.controller.tsを確認します。
すると、クラスデコレーターに対して@typescript-eslint/no-unused-varsの警告が誤検知されます。

対処方法

生成されたpackage.jsonで、"@typescript-eslint/eslint-plugin":"^4.33.0" にバージョンを下げると警告が消えます。
ただし、本来表示されるべき@typescript-eslint/no-unused-varsの警告もまた、表示されなくなってしまいます。

助けてください

とりあえず、一日悩んで上記の方法で対処することにしましたが、本来警告されるべき未使用の変数が警告されないのは気持ち悪すぎます…
今現在、NestJSをバリバリ使ってるって人いたらマジで遠慮なく連絡ください。
こちら筆者のツイッターです。フォローとかいいんで本当に相談したいです。この記事のコメントでも大丈夫です。
https://twitter.com/ganja_tuber

最後に

読んでくださってありがとうございました。

追記

nest-cliのGitHub issueに似た問題があったので状況をコメントしておきました。
https://github.com/nestjs/nest-cli/issues/1750#issuecomment-1230090353
結構いろんな人が直面しているっぽい。

追記2

治ったっぽい!
多分、typescript-eslint側のこのリリースかな?
https://github.com/typescript-eslint/typescript-eslint/releases/tag/v5.36.0

追記3

Qiita の方に筆者の考えた NestJS の最強 Lint 設定の解説を書いて公開しました。
https://qiita.com/ganja_tuber/items/895e382cd4d3cfae23a7

Discussion