eslint-config-airbnb をインストールしました。これは、React用にESLINTを事前に構成することになっています。
デフォルトのエクスポートには、ECMAScript 6+やReactを含むすべてのESLintルールが含まれています。 eslint、eslint-plugin-import、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
}
}
残念ながら、React JSXコードを含む.jsファイルをリントすると、次のエラーが発生します。
error JSX not allowed in files with extension '.js' react/jsx-filename-extension
前述のように、eslint-config-airbnbはすでにJSXをサポートするように設定されていませんでしたか?
そのエラーを削除するにはどうすればよいですか?
前述のようにファイル拡張子を.jsx
に変更するか、 jsx-filename-extension ルールを無効にします。以下を構成に追加して、JSXの.js
拡張を許可できます。
"rules": {
"react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }],
}
それは私の仕事です。あなたを助けることを願っています。
.eslintrc
でjsx-filename-extensionを無効にします:
「ルール」:{"react/jsx-filename-extension":[0]}
webpack.config.js
で:
解決:{拡張子:['.js'、 '.jsx']}、
ファイル拡張子を変更したくない場合は、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);