Instalé eslint-config-airbnb que se supone que preconfigura ESLINT para React:
Nuestra exportación predeterminada contiene todas nuestras reglas ESLint, incluidas ECMAScript 6+ y React. Requiere eslint, eslint-plugin-import, eslint-plugin-react y eslint-plugin-jsx-a11y.
Mi .eslintrc
ampliando su configuración:
{ "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 } }
Desafortunadamente, recibo el siguiente error al borrar un archivo .js con el código React JSX dentro:
error JSX not allowed in files with extension '.js' react/jsx-filename-extension
¿No se configuró eslint-config-airbnb como reacción para admitir JSX, como se indicó?
¿Qué se debe hacer para eliminar ese error?
Cambie sus extensiones de archivo a .jsx
como se mencionó o deshabilite la regla de extensión de nombre de archivo jsx . Puede agregar lo siguiente a su configuración para permitir extensiones .js
para JSX.
"rules": { "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }], }
Es trabajo para mi. Espero ayudarte.
deshabilite jsx-filename-extension en .eslintrc
:
"reglas": { "react/jsx-filename-extension": [0] }
en webpack.config.js
:
resolver: { extensiones: ['.js', '.jsx'] },
Llámame tonto si no te funciona
"rules": { "react/jsx-filename-extension": [0], "import/extensions": "off" }