当前位置: 首页 > 知识库问答 >
问题:

Eslint(Airbnb)缩进问题与React代码(JSX)

竺捷
2023-03-14

我正在努力解决我的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]

出于某种原因,埃斯林特认为莫达尔。内容应该在模态之后缩进。Header,但是即使我修复了所有的缩进,它也会要求它说一些结束标记的缩进是错误的:

预期结束标记与开始缩进匹配

我的eslint配置文件:

{
  "extends": "./my-eslint/index.js"
}

实际eslint代码:

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上安装了prettier,似乎现在它们都到了同一个页面,但我需要修复缩进问题。

更新1根据@a-jar-of-clay的建议,我尝试升级我的软件包,eslint到5.4.0,airbnb到17.1.0,airbnb base到13.1.0

现在我收到了新的错误消息,可能是由于某些不兼容:

错误: config-airbnb/规则/react.js:规则"反应/jsx-no-bind"的配置无效:值{"忽略参考": true,"允许箭头函数": true,"允许函数": false,"允许绑定": false,"忽略DOMComponents": true}不应该有额外的属性。

更新2根据@matt dell的要求,我用于手动运行的命令是:

./node_modules/.bin/eslint --fix --format unix  --config my-eslint/index.js

当我改变一些规则时,它会做出反应,所以它肯定会选择我的配置。

共有1个答案

华知
2023-03-14

我有同样的问题,我用一些包修复了它:通过使用eslint插件和扩展反应应用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...*/}

祝你好运

 类似资料:
  • 我正在配置eslint并使用AirBNB样式指南。 我想覆盖缩进(应该是2个空格)为4个空格。但是无论我在我的. eslintrc中做什么,我都不能抑制这个错误,这样我就可以使用4个空格的缩进。 我的代码库中到处都有这样一条消息:“预期缩进2个空格,但发现4个。(react/jsx indent)”。 我正在使用eslint 4.9.0。我如何解决这个问题?谢谢

  • 气动起毛 给出了错误 我试过了 和 但是没有成功

  • 问题内容: 我正在尝试在我的React项目上使用Airbnb的Javascript标准设置linting,它使用webpack。 根据评论更新了最新软件包。 我的webpack配置中也有一个预加载器设置 并进行了以下设置以运行脚本 我也有一个包含以下内容的文件 这给了我以下错误: 如果删除我认为可能有冲突的文件,则会出现以下错误: 随后出现npm错误,该错误导致任务退出。 任何帮助,将不胜感激!

  • react代码中eslint的错误提示: 这个该改成啥??

  • 2.5. 代码缩进 Python 函数没有明显的 begin 和 end, 没有花括号, 用于标函数的开始和结束。 唯一的分隔符是一个冒号 (:), 接着代码本身是缩进的。 例 2.5. 缩进 buildConnectionString 函数 def buildConnectionString(params): """Build a connection string from a di

  • 我在一个.js文件中得到了这段代码,我正在通过ESLint运行它。但是它抛出了一个关于这行的错误:)。 说明:。 如果我这样定义它: 我的代码不再工作,我如何让ESLint高兴并保持代码工作? 我想知道如何在不禁用特定行的错误报告的情况下满足ESLint。