Ошибка ESLint "Ошибка сборки модуля" с помощью eslint-config-airbnb
Я пытаюсь создать проект React, который использует webpack и ESLint с конфигурацией airbnb для ESLint. Когда я пытаюсь запустить проект с помощью сервера webpack dev, я получаю следующую ошибку:
"Ошибка сборки модуля: Ошибка: /react -template/ node_modules/eslint-config-airbnb/rules/react-a11y.js: Конфигурация ESLint недействительна: - Неожиданное свойство верхнего уровня" ecmaFeatures".
Это использование eslint-config-airbnb v. 15.0.1. Я проверил файл react-a11y.js и подтвердил, что существует свойство верхнего уровня "ecmaFeatures". Я знаю, как ESLint 2.0.0 ecmaFeatures теперь должны находиться под свойством parserOptions, но я не уверен, что это применимо только к файлу .eslintrc. Я хотел бы использовать конфигурацию airbnb, если это возможно, поэтому я ценю любую помощь. Вот мой файл .eslintrc для справки.
.eslintrc
{
"parser": "babel-eslint",
"parserOptions": {
"ecmaVersion": 2016,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"env": {
"es6": true,
"browser": true,
"node": true,
"jest": true
},
"extends": ["airbnb"]
}
Ответы
Ответ 1
Я понял решение.
Вам нужно отредактировать react-a11y.js
и react.js
, расположенный в ./node_modules/.bin/eslint-config-airbnb/rules/
.
В react-a11y.js
удалить:
ecmaFeatures: {
jsx: true
},
и замените его на:
parserOptions: {
ecmaFeatures: {
jsx: true,
},
},
В react.js
просто удалите:
ecmaFeatures: {
jsx: true
},
и вам должно быть хорошо идти.
Кроме того, я смотрю на репортаж airbnb прямо сейчас, и похоже, что они исправили его почти месяц назад, но я просто переустановил eslint-config-airbnb сегодня, поэтому я не уверен, что там произошло.
Вот ссылки на реакция-a11y.js diff и response.js diff. Они показывают, что вам нужно добавить/удалить.
Ответ 2
Глобальная eslint была обновлена с 3.19.0-1 до 4.0.0-1, когда проблема появилась для меня.
eslint
v4 пока не поддерживается в eslint-config-airbnb
и eslint-config-airbnb-base
https://github.com/eslint/eslint/issues/8726#issuecomment-308367541
Ответ 3
Вы не используете JSON. Он пропускает котировки вокруг первого "парсера";
{
"parser": "babel-eslint",
"parserOptions": {
"ecmaVersion": 2016,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"env": {
"es6": true,
"browser": true,
"node": true,
"jest": true
},
"extends": ["airbnb"]
}