使用 StandardJS,仅在 'else' 语句的错误行上出现大括号错误

Using StandardJS, getting error for curly brace on wrong line only for 'else' statements

我正在尝试使用 StandardJS 来帮助我检查代码(也是因为我的主管要求我这样做)。它在大多数情况下都很好用。但是,今天我开始收到以前从未见过的错误,报告说:

Closing curly brace does not appear on the same line as the subsequent block. (brace-style)
standard(brace-style)

这是导致错误的代码:

if (err.status === 'not found') {
  cb({ statusCode: 404 })
  return
}
else {  // THIS LINE causes the error
  cb({ statusCode: 500 })
  return
}

为什么我会收到此错误,我该如何预防?

请注意,我在此项目中使用的是 StandardJS 8.6.0。在安装了 StandardJS 扩展的 VS Code IDE 中,项目编译中的 Standard 都会产生错误。 (是的,我真的确保所有其他花括号都在正确的位置!)

如错误所述,您需要将右大括号与 else 之后的后续块放在同一行:

if (err.status === 'not found') {
  cb({ statusCode: 404 })
  return
} else {   // <--- now } is on same line as {
  cb({ statusCode: 500 })
  return
}

来自 the docs 关于标准 linting 的示例:

Keep else statements on the same line as their curly braces.

eslint: brace-style

// ✓ ok
if (condition) {
  // ...
} else {
  // ...
}

// ✗ avoid
if (condition) {
  // ...
}
else {
  // ...
}

当您在 typescript eslint 中遇到上述错误时,请使用以下格式。

if (Logic1) {
  //content1
  } else if (Logic2) {
  //content2
  } else if (Logic3) {
  //content3
  } else {
   //content4
  }