我正在解决我的 eslint 的一个小问题,它似乎在大多数情况下都可以正常工作,但是在某些情况下,它不能与React代码配合使用。
以下面的代码为例:
const cellPLay = (name, src) => (
<Table.Cell>
<Modal trigger={<Button icon><Icon name="video play" size="large" /></Button>}>
<Modal.Header>
{name}
</Modal.Header>
<Modal.Content image>
<Modal.Description>
<video src={src} controls style={{ width: 910 }} />
</Modal.Description>
</Modal.Content>
</Modal>
</Table.Cell>
);
给出这样的错误:
/my-path/MyFile.js:18:7: 预期缩进8个空格字符,但发现6。 [错误/反应/ jsx-indent]
出于某种原因, eslint 认为应该在 Modal.Header 之后缩进 Modal.Content ,但是即使我修复了所有缩进问它说某些结束标记的缩进是错误的:
预期的结束标记以匹配开始的缩进
我的eslint配置文件:
{
"extends": "./my-eslint/index.js"
}
实际的附加代码:
module.exports = {
extends: require.resolve('eslint-config-airbnb'),
env: {
browser: true,
jest: true,
es6: true,
},
parserOptions: {
ecmaVersion: 8,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
},
rules: {
strict: 'error',
'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx'] }],
'no-plusplus': 'off',
'jsx-a11y/media-has-caption': 'off',
'jsx-a11y/anchor-is-valid': [
'error',
{
components: ['Link'],
specialLink: ['to'],
},
],
},
};
我尝试手动添加jsx缩进规则
'react/jsx-indent': [2, 2],
没有解决。
还有其他想法吗?
顺便说一句,VSCode在缩进方面做得正确,但是当我手动运行 eslint 时,它会失败,并且由于正在运行代码样式自动化,因此我需要对其进行修复。我遵循了一些答案,并在VSCode上安装了漂亮的代码,看来现在它们可以到达同一页面,但是我需要解决缩进问题。
更新1 按照@ a-jar-of-clay的建议,我尝试将软件包升级,将eslint升级到5.4.0,将airbnb升级到17.1.0,将airbnb-base升级到13.1.0
现在我收到了新的错误消息,可能是由于某些不兼容性造成的:
错误:config-airbnb / rules / react.js:规则配置 “ react / jsx-no-bind”无效:值 {“ ignoreRefs”:true,“ allowArrowFunctions”:true,“ allowFunctions”:false,“ allowBind”:false,“ ignoreDOMComponents”:true} 不应具有其他属性。
更新2 按照@ matt-dell的要求,我用来手动运行的命令是:
./node_modules/.bin/eslint --fix --format unix --config my-eslint/index.js
这肯定是我的配置,因为它在我更改某些规则时会做出反应。
答案 0 :(得分:1)
我遇到了同样的问题,并通过一些软件包进行了修复: 通过使用eslint插件并扩展了react-app eslint,它已得到修复。
package.json
"babel-eslint": "^7.2.3",
"eslint": "^4.19.1",
"eslint-config-react-app": "^2.1.0",
"eslint-plugin-flowtype": "^2.50.1",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-jsx-a11y": "^5.1.1",
"eslint-plugin-react": "^7.11.1",
.eslintrc.js
"env": {
"browser": true,
"es6": true
},
"extends": ["react-app", "eslint:recommended"],
"parserOptions": {
"ecmaFeatures": {
"experimentalObjectRestSpread": true,
"jsx": true
},
"sourceType": "module"
},
"globals": {
"React": true
},
"plugins": [
"react"
],
"rules": {/* define your rules here...*/}
祝你好运!