为什么我不断收到Delete'cr'[prettier / prettier]?

时间:2018-11-28 09:52:24

标签: reactjs visual-studio-code prettier eslintrc

我将vscode与Prettier 1.7.2和Eslint 1.7.0一起使用。在每个换行符之后,我得到:

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

如何摆脱这个错误?

22 个答案:

答案 0 :(得分:38)

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

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

这也适用于我的Mac

答案 1 :(得分:10)

已修复 - 我的 .eslintrc.js 看起来像这样:

module.exports = {
  root: true,
  extends: '@react-native-community',
  rules: {'prettier/prettier': ['error', {endOfLine: 'auto'}]},
};

答案 2 :(得分:8)

修正:我的 eslintrc.js 一些规则看起来像这样:

rules: {
    'prettier/prettier': ['error', { "endOfLine": "auto"}, { usePrettierrc: true }],  // Use our .prettierrc file as source
    'react/react-in-jsx-scope': 'off',
    'react/prop-types': 'off',
    'simple-import-sort/imports': 'error',
    "simple-import-sort/exports": "error"
}

答案 3 :(得分:7)

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

或设置

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

在eslintrc文件的rules对象中。

如果您使用的是Windows机器,则可以基于git配置将“ endOfLine”设置为“ crlf”。

答案 4 :(得分:7)

解决方案

git config --global core.autocrlf false

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

问题的根本原因:

罪魁祸首是 gitcore.autocrlf 的一个配置属性

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

  • Windows 换行时,回车同时使用CR(carriage-return character)和换行符LF(linefeed character)
  • MacLinux 仅使用换行符 LF
  • 旧版本的 Mac 使用回车符 CR

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

当我在 Windows 上克隆代码时,autocrlf 默认为 true,然后文件的每一行都会自动转换为 CRLF。如果您不对文件进行任何更改,则 eslint 删除 CRpre-commitgit 自动将 CRLF 转换为 LF

参考

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

答案 5 :(得分:6)

将此添加到您的 .prettierrc 文件并打开 VSCODE

"endOfLine": "auto"

答案 6 :(得分:3)

检查 VS Code 底部状态栏的右侧,其中显示了行和列、空格、文本编码(UTF-8 等)等信息。您应该会看到一个 Select End Of Line Sequence 状态显示(LFCRLF),您可以点击该显示进行更改。确保您没有手动将其更改为与您希望 Prettier 使用的内容冲突的内容。

答案 7 :(得分:2)

在VSCode上更改此设置。

enter image description here

答案 8 :(得分:2)

如果以上代码对您不起作用,请尝试以下两个步骤。

1. 在文件 .eslintrc.json inside roles object 添加此代码将解决此问题

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

2 更改开发服务器 --fix

npm run dev

npm run dev --fix

npm run lint -- --fix
yarn run lint -- --fix

答案 9 :(得分:2)

尝试一下。它对我有用:

纱线运行棉绒--fix

npm运行棉绒---fix

答案 10 :(得分:2)

就我而言,我在 Mac 中使用 Windows 操作系统和 git 代码支持并转换为 CRLF 在 cmd 提示符下运行以下命令以阻止文件转换为 CRLF: enter image description here

git config --global core.autocrlf input

再次签出代码并再次打开 Visual Studio Code 并再次运行您的脚本。它对我有用。

答案 11 :(得分:1)

我在 Nest js 应用程序中遇到了同样的问题。将以下代码添加到 .eslintrc.js 规则,然后运行 ​​yarn run lint --fix 解决了该问题。

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

我的 .eslintrc.js 规则看起来像这样..

 rules: {
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'prettier/prettier': [
  'error',
  {
    endOfLine: 'auto',
  },
],

},

答案 12 :(得分:1)

我在这里尝试了所有方法,对我来说,我需要通过图标扩展>更漂亮>小引擎>扩展设置>更漂亮:行尾>设置为自动来管理更漂亮的配置扩展。

在我的 settings.json 中添加这两行后

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

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

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

答案 13 :(得分:1)

没有必要忽略 linter 的规则。只需自动修复它

npm install -g prettier
prettier -w .\webpack.config.js # or other file

答案 14 :(得分:1)

在根目录中打开 .editorconfig 文件并更改:

end_of_line = lf

end_of_line = auto

这应该可以修复新文件。

答案 15 :(得分:1)

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

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

  }

答案 16 :(得分:1)

我升级到“更漂亮”:“ ^ 2.2.0”,错误消失了

答案 17 :(得分:1)

我知道这已经很老了,但是我只是在我的团队中遇到了这个问题(一些Mac,一些Linux,一些Windows,所有vscode)。

解决方案是设置以vscode设置结尾的行:

.vscode/settings.json

{
    "files.eol": "\n",
}

https://qvault.io/2020/06/18/how-to-get-consistent-line-breaks-in-vs-code-lf-vs-crlf/

答案 18 :(得分:1)

我正在使用git + vscode + windows + vue,并且在阅读eslint文档后:https://eslint.org/docs/rules/linebreak-style

最后通过以下方法修复它:

*.js text eol=lf添加到.gitattributes

然后运行vue-cli-service lint --fix

答案 19 :(得分:0)

对我有用的是:

  1. 按照 Roberto LL 的建议将 prettier 更新到 2.2.1 版(目前的最新版本)。要做到这一点,请执行
<块引用>

npm 更新更漂亮

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

npm 运行 lint -- --fix

没有必要更改 .eslintrc 和 .prettierrc 文件!

答案 20 :(得分:0)

以上所有答案都是正确的,但是当我使用 Windows 并禁用 Prettier ESLint 扩展程序 rvest.vs-code-prettier-eslint 时,问题将得到解决。

答案 21 :(得分:-5)

更改文件类型从 tsx -> ts, jsx -> js

如果您正在处理 .tsx 或 .jsx 文件并且您只是导出样式等而不是 jsx,则可能会出现此错误。在这种情况下,通过将文件类型更改为 .ts 或 .js 来解决错误