ESLintがclass内に定義したstaticプロパティを許さない。。。だと?
ESLintの設定にparserがあるが、
その設定で特にparserを指定せずESLintを利用している場合に以下のように定義すると以下のエラーが表示される。
Parsing error: Unexpected token =eslint
どうやら標準のparserではclass内に定義したstaticプロパティを解釈できないようです。
Class hoge {
static moge = '';
}
※ちなみにNode.jsを利用した開発時のお話
class内に定義したstaticプロパティをESLintに許してもらう方法
結論としてはEslintのparserを指定すればよい。
のだけど、それ系のサイトには色々な解決方法があってbabel-eslint
や@babel/eslint-parser
、結局どっちなの?などよくわからなかったのでメモ書き。
parserは@babel/eslint-parser
を利用する。
npm i @babel/eslint-parser -D
※babel-eslint
は@babel/eslint-parser
の上位互換らしい。これ重要。
以降、babel-eslintの記事は無視できるので。
.eslintrc
{
parser: '@babel/eslint-parser'
}
大体これで上記の記述で動く!って書いてるけど自分の場合、全然動かなかった。
で、さらに調べると、babelの設定ファイルの指定が必要とか書いててしてしてみたもののそれでも動かなくて結局以下の設定内容に落ち着いた。
.eslintrc
{
parser: '@babel/eslint-parser',
parserOptions: {
requireConfigFile: "false"
};
}
.babelrc
/*空で作る*/
{}
設定ファイルでrequireConfigFileをfalseに指定しているのに.babelrcファイルを作成しないといけないのが謎だけど、とりあえず上記の設定で目的は達成できた。
参考:ESLintでクラス構文の static 変数 エラー警告を消す
コメント