ぶちのブログ

競プロとCTFが趣味なWebエンジニアのアウトプットの場

eslint v7 + typescript-eslintでParsing errorが出る場合の対応

TL;DR

.eslintignore等で.eslintrc.jsを無視する設定を追加する。

はじめに

eslintのv7へのメジャーバージョンアップで、かなりわかりにくいエラーが出て詰まったので、解決策を共有します。

環境

eslint v7 typescript-eslintを導入済みで、parseに@typescript-eslint/parserを設定し、parserOptionsでprojectを設定済み(型に関するルールを使用している)

エラー内容

/myapp/.eslintrc.js
  0:0  error  Parsing error: "parserOptions.project" has been set for @typescript-eslint/parser.
The file does not match your project config: .eslintrc.js.
The file must be included in at least one of the projects provided

✖ 1 problem (1 error, 0 warnings)

原因

最初は、parserOptions等の.eslintrc.jsの設定が悪いのかと思いましたが、実は.eslintrcの設定ではありませんでした。以下のBreaking Changeが原因でした。

Breaking: change default ignore pattern (eslint/rfcs#51) by mysticatea · Pull Request #12888 · eslint/eslint · GitHub

.eslintrc.jsがデフォルトでeslintの対象からは除外されていたものが、除外されなくなりました。
tsconfig.jsonのデフォルト設定では、.eslintrc.jsをprojectのファイルと認識しないようなので、tsconfigのproject configとeslintrcの対象ファイルの齟齬により、エラーが発生しています。

解決策

eslintの対象から.eslintrc.jsを外す、または、tsconfig.jsonの設定で.eslintrc.jsをincludeする。
今までの挙動を再現するのであれば、前者が良いため、.eslintignoreに.eslintrc.jsを追加しました。(ignorePatterns等を使っても問題ないはずです)