You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置ESLint中多行函数调用的缩进规则?

ESLint多行函数调用缩进规则配置与冲突解决

1. 为什么ESLint要求8个空格?

ESLint默认的indent规则中,多行函数调用的参数默认采用对齐到函数调用起始括号的逻辑。看你的代码:

expect(mockDataService.fetchTodaysEntries).toHaveBeenCalledWith(mockModel.currentDate,
  expect.any(Function));

toHaveBeenCalledWith(的起始括号,从行首到该括号的位置刚好是8个空格(test函数块的2级缩进共4个空格,加上expect(mockDataService.fetchTodaysEntries).的长度),所以ESLint要求参数行缩进8个空格来和括号对齐。

2. 如何配置消除冲突?

你有两种可选方案,任选其一就能解决VS Code内置格式化与ESLint的冲突:

方案一:修改ESLint规则,适配VS Code格式化

在你的ESLint配置文件(如.eslintrc.js、.eslintrc.json)中,调整indent规则的CallExpression参数缩进设置,让多行参数相对于函数调用行缩进2个空格(对应你代码里的6个空格):

{
  "rules": {
    "indent": ["error", 2, {
      "CallExpression": {
        "arguments": 2
      }
    }]
  }
}

这里"arguments": 2表示多行函数参数在函数调用行的缩进基础上再增加2个空格,和VS Code内置格式化的默认行为一致。

方案二:修改VS Code格式化设置,适配ESLint默认规则

其实VS Code内置格式化可以配置这个缩进行为,你可以在settings.json中添加以下设置,让参数对齐到函数调用的括号位置(适配ESLint默认要求的8个空格):

{
  "javascript.format.options": {
    "indentCallArguments": true
  }
}

设置后,VS Code格式化时会自动把多行函数参数缩进对齐到括号位置,和ESLint默认规则匹配。

两种方案都能在不关闭所有缩进规则、不加忽略注释、不安装额外工具的前提下消除报错红线。

内容的提问来源于stack exchange,提问作者Zack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 20:35:09