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

如何排查VSCode中触发换行的Prettier规则

解决Prettier强制解构赋值语句换行的问题

问题描述

我使用VSCode开发React和Node.js项目,.eslintrc配置文件中集成了Prettier规则。现有代码行:

const { variable1, variable2 , variable3 , variable4 } = req.body

Prettier强制将req.body换行至下一行。已安装ESLint和Prettier扩展,需要找到可修改的规则以保持该行在同一行。

我的.eslintrc配置如下:

{
  "env": {
    "node": true,
    "es6": true
  },
  "extends": [
    "eslint:recommended"
  ],
  "globals": {
    "Atomics": "readonly",
    "SharedArrayBuffer": "readonly"
  },
  "plugins": [
    "prettier",
    "@typescript-eslint",
    "simple-import-sort",
    "import"
  ],
  "parserOptions": {
    "ecmaVersion": 11,
    "sourceType": "module"
  },
  "rules": {
    "quotes": [
      "error",
      "single",
      {
        "avoidEscape": true
      }
    ],
    "prettier/prettier": [
      "error",
      {
        "singleQuote": true,
        "semi": false
      }
    ],
    "semi": [
      "error",
      "never"
    ],
    "no-trailing-spaces": "error",
    "block-spacing": "error",
    "no-var": "error",
    "keyword-spacing": "error",
    "no-multiple-empty-lines": [
      "error",
      {
        "max": 2,
        "maxEOF": 1
      }
    ],
    "eol-last": [
      "error",
      "always"
    ],
    "no-unused-vars": "off",
    "@typescript-eslint/no-unused-vars": "error",
    "simple-import-sort/exports": "error",
    "simple-import-sort/imports": [
      "error",
      {
        "groups": [
          // Packages
          [
            "^@?\\w"
          ],
          // Side effect imports.
          [
            "^\\u0000"
          ],
          // Internal packages.
          [
            "^(@|@pkg|utils|config|vendored-lib)(/.*|$)"
          ],
          // Parent imports. Put `..` last.
          [
            "^\\.\\.(?!/?$)",
            "^\\.\\./?$"
          ],
          // Other relative imports. Put same-folder imports and `.` last.
          [
            "^\\./(?=.*/)(?!/?$)",
            "^\\.(?!/?$)",
            "^\\./?$"
          ]
        ]
      }
    ],
    "import/first": "error",
    "import/newline-after-import": "error",
    "import/no-duplicates": "error"
  },
  "overrides": [
    {
      "files": [
        "*.ts"
      ],
      "parser": "@typescript-eslint/parser",
      "plugins": [
        "@typescript-eslint"
      ],
      "extends": [
        "eslint:recommended",
        "plugin:@typescript-eslint/eslint-recommended",
        "plugin:@typescript-eslint/recommended"
      ]
    }
  ]
}

解决步骤

问题出在Prettier的换行规则上,你需要在ESLint配置的prettier/prettier规则中添加两个关键配置项:

  • 调整printWidth(打印宽度):Prettier默认以80字符作为换行阈值,你的代码行可能接近或超过这个长度导致自动换行。可以根据需求调大这个值,比如设为120。
  • 设置wrapBeforeAssignment为false:强制Prettier不在赋值运算符(=)前换行,确保解构赋值语句保持在同一行。

修改后的prettier/prettier规则块如下:

"prettier/prettier": [
  "error",
  {
    "singleQuote": true,
    "semi": false,
    "printWidth": 120,
    "wrapBeforeAssignment": false
  }
]

生效方法

保存.eslintrc配置后,通过VSCode命令面板(快捷键Ctrl+Shift+P)执行ESLint: Restart ESLint Server,然后重新格式化代码即可看到效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 23:15:37