Eslint预期缩进1个制表符,但发现4个空格错误

Joh*_*now 7 config node.js eslint

我在最新版本的Eslint中使用VScode。这是我第一次使用棉短绒。

使用制表符作为缩进时,我不断收到此掉毛错误:

严重性:“错误”消息:“预期缩进1个标签,但发现4个空格。(缩进)”位于:“ 4,5”来源:“ eslint”

这是我的配置文件

{
"env": {
    "browser": true,
    "commonjs": true,
    "es6": true,
    "node": true
},
"extends": "eslint:recommended",
"rules": {
    "indent": [
        "error",
        "tab"
    ],
    "linebreak-style": [
        "error",
        "unix"
    ],
    "quotes": [
        "error",
        "single"
    ],
    "semi": [
        "error",
        "always"
    ]
}
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么在显示缩进标签时会引发此错误。很明显,这是将我的1个制表符计算为4个空格,但是当我按下制表符进行缩进时,我不明白为什么这样做。

更新:原因是因为在VScode中使用ctrl + shift + i美化代码实际上将使用空格而不是制表符。这就是原因。

Ali*_*esh 29

如果您同时使用eslintprettier,请勿通过{'indent': 'off'}在规则对象中使用来禁用缩进。为了保证你的代码风格的一致性,你必须使用这个规则。

解决方案:

这个问题可能是由于 eslint 和 prettier 冲突而发生的。尝试在文件中使用 eslint 的不同选项.eslintrc

如果您将鼠标悬停在 vsCode 中的错误行,则在错误描述末尾,您可以单击该链接来查看 eslint 文档。

例如,如果indent文档位于此链接中:

Eslint 缩进文档

对我来说,通过添加此行(对于三元表达式)解决了错误:

...
rules: {
    indent: [
  'error',
  2,
  {
    SwitchCase: 1,
    ignoredNodes: ['ConditionalExpression'], <-- I add this line
  },
],
...
Run Code Online (Sandbox Code Playgroud)

您还可以尝试使用flatTernaryExpressionsoroffsetTernaryExpressions作为三元表达式。


小智 13

尝试在.eslintrc.js文件中禁用缩进

rules: {
   'indent': 'off'
}
Run Code Online (Sandbox Code Playgroud)

这对我来说很好用

  • 如果你有 `.eslintrc.json`: `"rules": {"indent":"off"}` 带双引号。 (6认同)

Bad*_*laj 11

您可以自动修复问题

npm run lint -- --fix
Run Code Online (Sandbox Code Playgroud)


小智 10

在VSCODE中,转到菜单:

File / Preferences / Settings然后Text Editor(或仅在搜索设置框中搜索“标签”)

然后从以下设置中删除勾号:

  • Insert Spaces
  • Detect Indentation

另外,要使用默认的VSCode键盘快捷键自动设置文档格式,请使用:

Shift+ Alt+f


小智 7

我使用VScode来解决这个问题。您所要做的就是将鼠标悬停在有错误的部分上。 在此输入图像描述

和... 在此输入图像描述

  • 也许这来自您正在使用的扩展?我得到:“没有可用的快速修复” (2认同)

Ser*_*kiy 3

嗯,正是它所说的。您的配置中有“indent”:[“error”,“tab”],因此它需要制表符作为缩进。但发现你的文件中有4个空格。删除空格并在文件中放入制表符

  • 找到原因了,因为在VSCODE中,当你执行ctrl shift + i来美化代码时,它实际上使用了4个空格而不是制表符。这是正确的答案 (7认同)