eslint "ошибка синтаксического анализа: неожиданный токен {" в JSX
const title = 'My Minimal React Webpack Babel Setups';
const App = () => (<div><b>{title}</b><img src={img} /></div>)
В этом коде возникает ошибка "Ошибка синтаксического анализа ESLint: неожиданный токен {"
мой файл .eslintrc.js такой
module.exports = {
"extends": "airbnb"
};
и я устанавливаю такие пакеты
"eslint": "^5.9.0",
"eslint-config-airbnb": "^17.1.0",
"eslint-loader": "^2.1.1",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-jsx-a11y": "^6.1.2",
"eslint-plugin-react": "^7.11.1",
Я думал, что ESLint может читать JSX, потому что в токене "<" не возникает ошибка. (Когда я изменяю раздел extends в файле.eslintrc.js на "airbnb-base", возникает ошибка "Ошибка синтаксического анализа ESLint: неожиданный токен <. Но теперь токен" <"не возникает ошибка)
Однако мой ESLint не может прочитать строку синтаксиса JSX {переменная}
4 ответа
Эслинт сам по себе не достаточно хорош. Первая установка babel-eslint
:
npm install --save-dev babel-eslint
Затем добавьте в свой .eslintrc
файл:
"parser": "babel-eslint"
Вы можете установить eslint-plugin-babel
как хорошо, но я считаю, что это не нужно
У меня та же ошибка на Next.js.
Эти шаги решили мою проблему:
1) Установить бабел-эслинт:
npm install --save-dev babel-eslint
2) Добавить babel-eslint в качестве парсера в конфигурацию eslint
"parser": "babel-eslint"
Мой конфиг eslint выглядит так (.eslintrc):
{
"env": {
"browser": true,
"es6": true,
"commonjs": true,
"node": true
},
"extends": ["eslint:recommended", "plugin:react/recommended"],
"parser": "babel-eslint",
"parserOptions": {
"ecmaVersion": 9,
"ecmaFeatures": {
"jsx": true
},
"sourceType": "module"
},
"plugins": ["react"],
"rules": {
"react/react-in-jsx-scope": 0,
"no-console": 1
}
}
Для всех, кто зайдет на этот пост в марте 2020 года или позже, были некоторые обновления для
babel
и это приводит к тому, что принятый ответ устарел.
По сути, если вы пишете React и не используете фреймворк, такой как Next.js или create-react-app, и вам нужно настроить его для правильной работы вручную, вот краткое руководство, которому нужно следовать.
Предположения
Предполагается, что вы начинаете новый проект с марта 2020 г. и работаете с версией 8.8 или более поздней.
Что установить
Запустите следующее
npm install @babel/eslint-parser @babel/preset-react
Если у вас нет
eslint-plugin-react
установлен, вы также захотите установить его, чтобы использовать рекомендуемые
eslint
настройки для проектов React.
Важно : если у вас есть
babel-eslint
установлен или присутствует в вашем
package.json
Все еще,
npm uninstall
Это.
Как настроить
Пример
.eslintrc.js
файл (или
.eslintrc
или же
.eslintrc.json
)
module.exports = {
env: {
browser: true,
es2021: true,
},
extends: ['eslint:recommended', 'plugin:react/recommended'],
parser: '@babel/eslint-parser', // <<<< Important
parserOptions: {
requireConfigFile: false, // <<<< Allows you to skip Eslint complaining that you don't have a .babelrc file
babelOptions: {
presets: ['@babel/preset-react'], // <<<< Important
},
ecmaFeatures: {
jsx: true, // <<<< Important
},
ecmaVersion: 'latest',
sourceType: 'module',
},
rules: {},
};
После этих обновлений мой проект начал работать как положено.
использованная литература
Мой.eslintr имеет эту дополнительную конфигурацию для включения JSX
"parserOptions": {
"ecmaFeatures": {
"jsx": true
}
}