web-dev-qa-db-ja.com

JSデコレーターのESLint予期しない文字「@」

JSプロジェクトでデコレーターを使用しようとしていますが、ESLintは@記号が予期しない文字であることを示すエラーをスローします。

私のコード:

@observable items = [];

私の.eslintrc:

{
    "parserOptions": {
            "ecmaVersion": 6,
            "ecmaFeatures": {
                "jsx": true
            },
            "sourceType": "module"
    },
    "env": {
            "browser": true,
            "node": true,
            "es6": false
    },
    "ecmaFeatures": {
            "modules": true
    },
    "rules": {
        "strict": [
            2,
            "global"
        ],
        "quotes": [
            2,
            "single"
        ],
        "indent": [
            2,
            4
        ],
        "eqeqeq": [
            2,
            "smart"
        ],
        "semi": [
            2,
            "always"
        ],
        "max-depth": [
            2,
            4
        ],
        "max-statements": [
            2,
            15
        ],
        "complexity": [
            2,
            5
        ]
    }
}
10
user818700

おそらく babel-eslint を使用すると、ESLintがまだ実装していないもの(通常、このような実験的な機能)を解析するためにBabelが使用されます。彼らのREADMEから:

現時点では、クラスプロパティ、デコレータ、型などを使用する場合に必要になります。

現在のeslintセットアップでwithを使用しています。.eslintrc

14
Matt

簡単な答え:

ライブラリをインストールする

npm i -D babel-eslint

.eslintrcに追加

"parser": "babel-eslint"
4
bora89

Visual Codeを使用している場合、常に機能するとは限りません。次のパラメーターをユーザー設定(またはワークスペース設定)に追加する必要があります:{ ... "eslint.options": { "experimentalDecorators": true } ... }
どういうわけか、このオプションは.eslintrcに入れたすべてのものを獲得します。

3
Nosyara