Неожиданный символ ESLint '@' для декораторов JS

Я пытаюсь использовать декораторы в своем проекте 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
        ]
    }
}

person Community    schedule 18.11.2016    source источник
comment
В ES6 нет декораторов.   -  person a better oliver    schedule 18.11.2016


Ответы (3)


Вы, вероятно, захотите использовать babel-eslint, который использует Babel для анализа вещей, которые ESLint еще не реализовал. (обычно такие экспериментальные функции). Из их README:

На данный момент он вам понадобится, если вы используете такие вещи, как свойства класса, декораторы, типы.

Он используется с вашей текущей настройкой eslint, вам просто нужно обновить некоторую конфигурацию в вашем .eslintrc

person Matt    schedule 18.11.2016
comment
Спасибо, Мэтт, я не могу понять по этой ссылке, должна ли установка babel-eslint заменить мой текущий «eslint» или я использую его в сочетании с? - person ; 18.11.2016
comment
@DeanGibson это связано. В README есть инструкции по установке. Ознакомьтесь с частью eslintrc ("parser": "babel-eslint",) - person Matt; 18.11.2016
comment
Эта цитата из README.md от babel-eslint, возможно, будет более актуальной, чем проблема eslint: на данный момент она вам понадобится, если вы используете такие вещи, как свойства класса, декораторы, типы. - person Aaron; 18.11.2016

Быстрый ответ:

Установить библиотеку

npm i -D babel-eslint

Добавьте в свой .eslintrc

"parser": "babel-eslint"
person bora89    schedule 25.11.2018

Если вы используете визуальный код, это не всегда будет работать. Вам нужно добавить в настройки пользователя (или настройки рабочей области) следующий параметр: { ... "eslint.options": { "experimentalDecorators": true } ... }
Каким-то образом эта опция выигрывает у всего, что вы помещаете в .eslintrc .

person Oleg Imanilov    schedule 06.06.2018