为什么我总是收到 "[eslint] 删除 `CR` [prettier/prettier]" 的提示?

700
我正在使用带有Prettier 1.7.2和ESLint 1.7.0的VS Code。 每次换行后我都会遇到以下问题:
[eslint] Delete `CR` [prettier/prettier]

这是.eslintrc.json文件:

{
  "extends": ["airbnb", "plugin:prettier/recommended"],
  "env": {
    "jest": true,
    "browser": true
  },
  "rules": {
    "import/no-extraneous-dependencies": "off",
    "import/prefer-default-export": "off",
    "no-confusing-arrow": "off",
    "linebreak-style": "off",
    "arrow-parens": ["error", "as-needed"],
    "comma-dangle": [
      "error",
      {
        "arrays": "always-multiline",
        "objects": "always-multiline",
        "imports": "always-multiline",
        "exports": "always-multiline",
        "functions": "ignore"
      }
    ],
    "no-plusplus": "off"
  },
  "parser": "babel-eslint",
  "plugins": ["react"],
  "globals": {
    "browser": true,
    "$": true,
    "before": true,
    "document": true
  }
}

.prettierrc文件:

{
  "printWidth": 80,
  "tabWidth": 2,
  "semi": true,
  "singleQuote": true,
  "trailingComma": "es5",
  "bracketSpacing": true,
  "jsxBracketSameLine": false,
}

如何解决这个错误?


13
请查看您的.eslintrc.js文件。从扩展数组中删除“ 'plugin:prettier/recommended'”应该可以解决问题。 - Sanu Soman
4
您可以尝试禁用 ESLint VSCode 扩展。 - Amitesh
42个回答

6

请检查VS Code底部状态栏右侧,其中显示了行数、列数、空格和文本编码(UTF-8等)等信息。您应该会看到一个名为“选择行尾序列”的状态显示(可以是LFCRLF),您可以单击它进行更改。请确保您没有手动更改为与Prettier所使用的冲突的内容。


6

我的情况是使用 Windows 操作系统,而 Git 代码支持 Mac 并将其转换为 CRLF。在命令提示符中运行以下命令以停止文件转换为 CRLF:

enter image description here
git config --global core.autocrlf input

再次检查代码,重新打开Visual Studio Code并再次运行您的脚本。这对我有效。


为什么要使用 input?这个建议与 koko-js478 的建议有何不同? - YakovL

6

我尝试了这里的所有方法,对我来说,我需要通过图标扩展管理prettier配置扩展 > prettier > small engine > 扩展设置 > Prettier: 行结尾 > 设置为自动。

在我的settings.json文件中添加了这两行后:

"eslint.run": "onSave",
"editor.formatOnSave": true,

我能够在 .eslintrc.js 规则中使用以下配置。

"prettier/prettier": ["error", {
    "endOfLine":"auto"
}],

5
最好的解决方案是使用.editorconfig。尤其是当你和不同类型操作系统的团队一起工作时。因此,在.eslintrc中禁用prettier根本不是一个好选择。
从你的vscode扩展程序中安装.editorconfig。在你的项目根目录下创建一个.editorconfig文件,并将其添加到你的.gitignore文件中,这样它就不会影响你的团队成员。
将这个内容添加到你的.editorconfig文件中,或者从文档中选择你需要的工作流设置。
[*]
end_of_line = lf

这将自动将您的文件保存为EOL类型lf,而不是在Windows中的crlf。如果使用Mac,则相反。或者取决于项目工作流程设置。
根本原因是Windows默认为crlf。因此,每次尝试创建文件时,都会遇到这个更漂亮的Delete 'cr'错误。
此外,
如果从git获取的所有文件都包含Delete 'cr'
1. 删除您的项目 2. 重新安装git并选择按原样检出,提交Unix样式行结尾 3. 再次从存储库克隆您的项目 4. 使用上面设置的.editorconfig

1
到目前为止,这是最好的答案,谢谢。 - Ngô Trọng Phúc
最佳答案。解决核心问题。 - Renato Sanhueza

4

4

执行eslint来进行代码检查和修复可以解决我的问题。

eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore

如果你有lint脚本:npm run lint


另外,如果您的项目已经设置了 npm 的代码检查工具,您也可以使用 npm run lint。出于某些原因,在我的 Vue 3 项目中,VSCode 偶尔会遇到一些错误,正如 OP 所提到的那样。 - Gediminas

4

当我从git拉取代码时出现错误,以下步骤帮助我解决了问题:

步骤1:

git config --global core.autocrlf false

步骤2:

  • 删除当前文件夹

步骤3:

  • 再次从git拉取代码
  • 再次尝试运行命令

git config --global core.autocrlf false这个命令非常有效,可以解决 VS Code 中的 LF 问题。 - Frank Guo
如果您正在使用不同的配置工作于不同的项目中,您可以通过省略 --global 标志在本地为该存储库设置标志。此外,您无需删除整个存储库并再次克隆它,只需将分支重置为原始状态即可。 - aitorllj93

3

编辑您的 .eslintrc.json 文件并更新下面显示的 "prettier/prettier" 值。

我遇到了相同的问题,并通过以下更改进行了修复。

"prettier/prettier": [
    "error", {
         "singleQuote": true,
         "parser": "flow" 
    }
],

3

在根目录下打开 .editorconfig 文件,将以下内容:

end_of_line = lf

改为:

end_of_line = auto

这样可以解决新文件的问题。


3

以下是给我带来成功的方法:

  1. 按照Roberto LL的建议,将prettier更新到2.2.1版本(目前最新版本)。执行以下命令进行更新:

npm update prettier

  1. 按照Hakan的建议执行lint fix(这将修改项目中的所有文件以将行尾转换为LF)。

npm run lint -- --fix

不需要更改.eslintrc和.prettierrc文件!


1
我的电脑上已经安装了最新版的prettier,但是运行npm run lint -- --fix命令解决了问题。 - Jashan PJ
这对我在nestjs和Windows上工作非常好,谢谢! - JazMagno
我尝试了很多其他在这里提出的解决方案,但只有这个解决了问题。 - codesnerd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接