Zainstalowałem eslint-config-airbnb, który ma wstępnie skonfigurować ESLINT dla React:
Nasz domyślny eksport zawiera wszystkie nasze reguły ESLint, w tym ECMAScript 6+ i React. Wymaga eslint, eslint-plugin-import, eslint-plugin-act i eslint-plugin-jsx-a11y.
Moje .eslintrc
rozszerzenie jego konfiguracji:
{ "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
}
}
Niestety, podczas lintowania pliku .js z kodem React JSX otrzymuję następujący błąd:
error JSX not allowed in files with extension '.js' react/jsx-filename-extension
Czy konfiguracja eslint-config-airbnb nie reaguje już na obsługę JSX, jak wspomniano?
Co należy zrobić, aby usunąć ten błąd?
To dla mnie praca. mam nadzieję, że ci pomogę.
wyłącz rozszerzenie jsx-filename-extension w
.eslintrc
:"rules": {"aware / jsx-filename-extension": [0]}
w
webpack.config.js
:rozwiązać: {rozszerzenia: ['.js', '.jsx']},
źródło
webpack.config.js
przykładu.Nazwij mnie manekinem, jeśli to nie działa
źródło
Jeśli nie chcesz zmieniać rozszerzenia pliku, możesz wyeksportować funkcję, która zwraca jsx, a następnie zaimportować i wywołać tę funkcję w pliku js.
i wtedy
źródło
Aby wyjaśnić odpowiedź Martina , wydaje się, że obecnie nie jest możliwe użycie
JSX
w React Native. Utworzono PR, ale cofnięto go z powodu obaw o fragmentację i nieznane konsekwencje posiadania takich rzeczyindex.ios.jsx
. Nie jestem pewien, jak działa AirBnb w tym zakresie, ani czy tak jest, ale użyłem w zasadzie tego samegorules
bloku co Martin.źródło
Poniższa dokumentacja Reacta :
Zgodnie z przewodnikiem stylistycznym Airbnb :
Możesz to zrobić:
źródło