EsintクラスでEs6クラスをリントしようとすると、ESLintがParsing error: Unexpected token =
エラーをスローします。 eslintで太い矢印クラスメソッドを有効にするために不足している構成パラメーターは何ですか?
サンプルクラス:
class App extends React.Component{
...
handleClick = (evt) => {
...
}
}
.eslint
{
"ecmaFeatures": {
"jsx": true,
"modules":true,
"arrowFunctions":true,
"classes":true,
"spread":true,
},
"env": {
"browser": true,
"node": true,
"es6": true
},
"rules": {
"strict": 0,
"no-underscore-dangle": 0,
"quotes": [
2,
"single"
],
}
}
実験的な機能(クラスメソッドとしての矢印など)を使用する場合は、 babel-eslint
パーサーとして。デフォルトのパーサー(Espree)は実験的な機能をサポートしていません。
最初のインストールbabel-eslint
:
npm i -D babel-eslint
次に、以下を.eslintrc.json
ファイルに追加します。
"parser": "babel-eslint"
エラーメッセージで読んだものからParsing error: Unexpected token =
これは、リンターエラーよりもパーサーエラーのようです。
JavaScriptコンパイラ/トランスパイラーとして Babel および babel-eslint
あなたのESLintパーサーとしては、ESLintではなくBabelが構文について文句を言っている可能性があります。
問題は矢印関数に関するものではなく、より実験的なもの(ES7 ??)と呼ばれるものです プロパティ初期化子 または クラスインスタンスフィールド (または両方:))と呼ばれます。
この新しい構文/機能を使用する場合は、 preset-stage-1
バベル。このプリセットには、 syntax-class-properties
その構文を許可するプラグイン。
要約:
Babelプリセットをインストールします。
npm install babel-preset-stage-1
このプリセットをプリセットのリストに追加します(すでにes2015
およびreact
プリセット)、いずれかの.babelrc
または babel-loader
webpackを使用している場合はクエリフィールド。
"presets": ["es2015", "stage-1", "react"]
今日も同じ問題に遭遇しました
と@dreyescatの答えは私のために動作します。
デフォルトでは、babelは3つのプリセットを使用します:es2015
、react
、stage-2
stage-1
presetも選択すると、エラーはなくなります
Bebeljs.ioサイトで自分でテストできます
最初にこれらのプラグインをインストールします。
npm i -D babel-eslint eslint-plugin-babel
次に、これらの設定をeslint構成ファイルに追加します。
。eslintrc.json
{
"plugins": [ "babel" ],
"parser": "babel-eslint",
"rules": {
"no-invalid-this": 0,
"babel/no-invalid-this": 1,
}
}
この方法で太い矢印クラスのメソッドを使用できますが、no-invalid-this
eslintからのエラー。
ハッピーコーディン