为什么我总是收到 Delete 'cr' [prettier/prettier]?

IT技术 reactjs visual-studio-code prettier eslintrc
2021-04-01 02:28:21

我正在使用带有 Prettier 1.7.2 和 Eslint 1.7.0 的 vscode。在每个换行符之后,我得到:

[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,
}

我怎样才能摆脱这个错误?

6个回答

尝试"endOfLine":"auto"在您的 .prettierrc 文件中设置(在对象内)

或设置

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

在 eslintrc 文件的规则对象中。

如果您使用的是 windows 机器 endOfLine 可以根据您的 git 配置“crlf”。

在 Windows 机器上将行尾从CRLF更改LF为对我有用
2021-05-28 02:28:21
对于像我这样的新手来说,这就是它的完成方式。打开.eslintrc.json存在于您的根目录 ( frontend) 中。更改后,它将如下所示:{ "extends": ["react-app", "prettier"], "plugins": ["prettier"], "rules": { "prettier/prettier": ["error", { "endOfLine": "auto" }] } }
2021-06-05 02:28:21
更新 .prettierrc.js 并endOfLine: 'auto'在 Windows + vs 代码上为我工作。更新 .eslintrc.js 不起作用
2021-06-07 02:28:21
我的猜测是您可能需要在 VS Code 中使用 Prettier 扩展。prettierrc 仅在这种情况下有效。
2021-06-09 02:28:21
更改.eslintrc文件对我有用,但对.prettierrc文件无效不知道为什么或有什么区别(我对 OP 上的所有标签都不熟悉)。
2021-06-18 02:28:21

在 VSCode 上更改此设置。

在此处输入图片说明

这将解决问题,但只有在您使用 CRLF 打开其他一些源文件之前。以上答案更有效。
2021-05-27 02:28:21
这挽救了我的一天。我在 Window 中使用 VS Code。这可能是由于来自其他系统的相同提交
2021-06-05 02:28:21
火箭科学!
2021-06-12 02:28:21
这对我有用。我确实尝试了其他方法,包括编辑配置文件,但都没有奏效。
2021-06-14 02:28:21
除了更改CRLFLF内VSCode,git可能会做的引擎盖下的自动转换。如果您checkout Windows-style在安装时选择,它会将您克隆的源代码转换为CRLF. 所以重新安装git并选择checkout as-is, commit Unix-style将修复它。
2021-06-20 02:28:21

在我的 Windows 机器上,我通过在当前项目目录中存在rules.eslintrc.js文件对象中添加以下代码片段来解决这个问题

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

这也适用于我的 Mac

@brijs 你是什么意思?
2021-06-06 02:28:21

在副角色的 .eslintrc.json 文件中添加此代码将解决此问题

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

  }

解决方案

git config --global core.autocrlf false

全局配置后,需要再次拉取代码。

问题的根本原因:

罪魁祸首是git,一个配置属性core.autocrlf

由于历史原因,文本文件的换行符 onwindowslinux是不同的。

  • Windows换行时,回车CR(carriage-return character)与换行同时使用LF(linefeed character)
  • Mac并且Linux只使用换行符LF
  • 旧版本Mac使用回车CR

因此,在不同的系统中创建和使用文本文件时会出现不兼容的问题。

当我在 上克隆代码时Windows默认autocrlftrue,然后文件的每一行都会自动转换为CRLF. 如果您不对文件进行任何更改,请eslint删除CRpre-commit因为git自动转换CRLFLF.

参考

https://developpaper.com/solution-to-delete-%E2%90%8Deslint-prettier-prettier-error/

这对我有用......命令+ repull存储库。
2021-05-22 02:28:21
我遇到这个问题的项目是在 macos 上开发的,而不是在 Windows 上安装它导致了上述错误。这个解决方案是我认为明智的,它解决了这个问题。无需更改代码,项目运行无错误。
2021-06-08 02:28:21