JSX не допускается в файлах с расширением '.js ' с eslint-config-airbnb
Я установил eslint-config-airbnb это должно предварительно настроить ESLINT для React:
наш экспорт по умолчанию содержит все наши правила ESLint, включая ECMAScript 6+ и реагировать. Он требует eslint, eslint-плагин-импорт, eslint-plugin-react и eslint-plugin-jsx-a11y.
мой .eslintrc
расширение конфигурации:
{ "extends": "eslint-config-airbnb",
"env": {
"browser": true,
"node": true,
"mocha": true
},
"rules": {
"new-cap": [2, { "capIsNewExceptions": ["List", "Map", "Set"] }],
"react/no-multi-comp": 0,
"import/default": 0,
"import/no-duplicates": 0,
"import/named": 0,
"import/namespace": 0,
"import/no-unresolved": 0,
"import/no-named-as-default": 2,
"comma-dangle": 0, // not sure why airbnb turned this on. gross!
"indent": [2, 2, {"SwitchCase": 1}],
"no-console": 0,
"no-alert": 0,
"linebreak-style": 0
},
"plugins": [
"react", "import"
],
"settings": {
"import/parser": "babel-eslint",
"import/resolve": {
"moduleDirectory": ["node_modules", "src"]
}
},
"globals": {
"__DEVELOPMENT__": true,
"__CLIENT__": true,
"__SERVER__": true,
"__DISABLE_SSR__": true,
"__DEVTOOLS__": true,
"socket": true,
"webpackIsomorphicTools": true
}
}
к сожалению, я получаю следующее сообщение об ошибке при пылеобразования на .файл JS с Реагировать код JSX внутри него:
error JSX not allowed in files with extension '.js' react/jsx-filename-extension
разве eslint-config-airbnb не настроен реагировать на поддержку JSX уже, как указано ?
что нужно сделать, чтобы удалить эту ошибку ?
4 ответов
либо измените расширения файлов на .jsx
Как уже упоминалось или отключить jsx-имя файла-расширение правило. Вы можете добавить следующее в свою конфигурацию, чтобы разрешить .js
расширения для JSX.
"rules": {
"react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }],
}
это работа для меня. надеюсь помочь вам.
-
отключить расширение JSX-filename в
.eslintrc
:"правила": { "react/jsx-filename-extension": [0] }
-
на
webpack.config.js
:разрешить: { выдвижений.'[ :js','.jsx'] },
подробно Мартина!--5--> ответ, кажется, что в настоящее время невозможно использовать JSX
в React Native. ПИАР был создан, но вернулся из-за опасений о фрагментации и неизвестных последствиях наличия таких вещей, как index.ios.jsx
. Я не уверен, как AirBnb работает вокруг этого или если они это делают, но я использовал в основном то же самое rules
блок, как Мартин.
Если вы не хотите изменять расширение файла, вы можете экспортировать функцию, возвращающую jsx, а затем импортировать и вызвать эту функцию в файле js.
// greeter.jsx
import React from 'react';
export default name => (
<div>
{`Hello, ${name}!`}
</div>
);
а то
// index.js
import ReactDOM from 'react-dom';
import greeter from './components/greeter';
const main = document.getElementsByTagName('main')[0];
ReactDOM.render(greeter('World'), main);