预期换行符为'LF'但发现'CRLF'linebreak-style

当在gulp项目中使用eslint时,我遇到了这样的错误问题 Expected linebreaks to be 'LF' but found 'CRLF' linebreak-style和我正在使用Windows环境的运行gulp和整个错误日志给出如下

 Kiran (master *) Lesson 4 $ gulp
Using gulpfile c:\Users\Sai\Desktop\web-build-tools\4\
gulpfile.js
Starting 'styles'...
Finished 'styles' after 17 ms
Starting 'lint'...
'lint' errored after 1.14 s
ESLintError in plugin 'gulp-eslint'
sage: Expected linebreaks to be 'LF' but found 'CRLF'.
ails: fileName: c:\Users\Sai\Desktop\web-build-tools\4\js\extra.js






$>Users\Sai\Desktop\web-build-tools\4\js\extra.js
error  Expected linebreaks to be 'LF' but found 'CRLF'  linebreak-style

我还包括extra.js文件作为错误指示可能的错误。

function getWindowHeight() {
return window.innerHeight;
}


getWindowHeight();
402013 次浏览

检查你是否在你的.eslintrc或源代码中配置了如下linebreak-style规则:

/*eslint linebreak-style: ["error", "unix"]*/

因为你在Windows上工作,你可能想要使用这个规则:

/*eslint linebreak-style: ["error", "windows"]*/

参考linebreak-style文档:

当和很多人一起开发时,他们都有不同的编辑器,VCS 应用程序和操作系统可能会出现不同的行 结局是由上述任何一个(可能特别 在使用windows和mac版本的SourceTree时发生 ) . < / p >

在windows操作系统中使用的换行符(新行)是 通常是回车(CR)后跟换行(LF),使其成为 行换行(CRLF),而Linux和Unix使用简单的换行 换行(LF)。对应的控制序列为"\n"(用于LF) and "\r\n" for (CRLF).

这是一个可以自动修复的规则。命令行上的--fix选项自动修复此规则报告的问题。

但是如果你希望在代码中保留CRLF行结束符(因为你在Windows上工作),不要使用fix选项。

我发现它很有用(我想忽略换行而不改变任何文件),在.eslintrc中使用换行样式忽略它们,根据这个答案:https://stackoverflow.com/a/43008668/1129108

module.exports = {
extends: 'google',
quotes: [2, 'single'],
globals: {
SwaggerEditor: false
},
env: {
browser: true
},
rules:{
"linebreak-style": 0
}
};

如果你正在使用vscode并且你在窗户上,我建议你使用单击窗口右下角的选项,将其从CRLF设置为LF。因为我们不应该仅仅为了消除窗户上的错误而关闭配置

如果没有看到LF / CLRF,则右击状态栏并选择编辑器行结束。

menu

发生在我身上,因为我运行git config core.autocrlf true并且我忘记返回。

在那之后,当我签出/提取新代码时,所有LF (Unix中的换行符)都被CRLF (Windows中的换行符)所取代。

我运行linter,所有错误消息都是Expected linebreaks to be 'LF' but found 'CRLF'

为了解决这个问题,我通过运行git config --list | grep autocrlf检查了autocrlf值,得到:

core.autocrlf=true
core.autocrlf=false

我编辑了全局GIT配置~/.gitconfig,并将autocrlf = true替换为autocrlf = false

之后,我进入我的项目并执行以下操作(假设代码在src/文件夹中):

CURRENT_BRANCH=$(git branch | grep \* | cut -d ' ' -f2);
rm -rf src/*
git checkout $CURRENT_BRANCH src/

只是在.gitconfig文件false中创建了autocrlf参数,并重新克隆了代码。它工作!

< p > <代码>(核心) selflf = false

如果你正在使用vscode,我会建议你点击窗口右下角的选项,并将其从CRLF设置为LF.这修正了我的错误

如果你正在使用WebStorm并且你在窗户上,我建议你单击设置/编辑器/代码样式/常规选项卡,并从下拉菜单中选择“窗口(\r\n)”。这些步骤也适用于Rider。

enter image description here

如果你想要它在crlf (Windows Eol),去文件->首选项->设置。在User选项卡中输入“end of line”,并确保文件:生物被设置为\ r \ n,如果你使用的是Prettier扩展,请确保更漂亮:行到头了被设置为crlf。最后,在你的eslintrc文件中,添加这个规则:'linebreak-style': ['error', 'windows'] enter image description here

当我用eslint使用VSCode时,同样的情况也发生了。如果你使用VSCode,

1 -在VScode的右下角单击名称可以是LF或CRLF的区域。

2—在下拉菜单中选择“LF”。

这对我来说很有效。

enter image description here

这里有一个非常好的方法来管理这个错误。你可以把下面的代码放到.eslintrc.js文件中。

根据操作系统,它将使用适当的行结束符。

rules: {
'linebreak-style': ['error', process.platform === 'win32' ? 'windows' : 'unix'],
}

在Vue js中的.eslintrc文件中添加'linebreak-style':0到我们的规则

  rules: {
'linebreak-style':0,
}

enter image description here

尝试使用linter的——fix标志来解决这个问题。

eslint filePath——修复

Git配置核心。autocrlf假

Git rm——cached -r。

Git重置——很难

在我的情况下(vue.js项目,使用vue-cli创建),lint问题Expected linebreaks to be 'LF' but found 'CRLF' linebreak-style与pretty有关。 将所有行结尾替换为"lf": https://prettier.io/docs/en/options.html#end-of-line

由于我使用Windows开发,我设置了这3个(git, eslint,更漂亮)配置,以避免行结束问题:

  1. Git:我设置git config --global core.autocrlf true
  2. eslint:在.eslintrc.js文件中配置:
      module.exports = {
rules: {
'linebreak-style': ['error', 'windows'],
},
};
  1. 更漂亮:最后在prettier.config.js中:
module.exports = {
endOfLine: "crlf",
};
提示:确保已经安装了Git作为图片,如果没有做第一。 你可以将其他特性作为默认值,你可以选择visual studio code作为默认编辑器

enter image description here

< >强Windows用户: 卸载Visual Studio Code,然后重新安装,EditorConfig应该可以正常工作

注意=比;卸载Visual Studio Code仍然会留下旧的设置和扩展!完全删除Windows上的Visual Studio代码

卸载的Visual Studio

  1. 这台PC >本地磁盘(C) Users >CurrentUser祝辞AppData祝辞当地的祝辞项目在Microsoft VS Code
    1. Unins000.exe或从控制面板卸载它
  2. 这台PC >本地磁盘(C) Users >CurrentUser祝辞AppData祝辞当地的祝辞漫游
    1. 代码 =比;文件夹应该删除它
  3. 这台PC >本地磁盘(C) Users >CurrentUser祝辞
    1. .vscode =比;文件夹应该删除它
  4. 重新安装vs代码现在应该工作了。

我只是想添加一个更简单的方法。在VScode的右下角单击LF或CRLF来在它们之间切换。见图

我将换行样式设置为0,但不工作。

rules: {
"linebreak-style": 0,
},

所以后来我发现需要改变每一个文件从"CRLF"到“LF",那要花很多时间。

这很有帮助

git config core.autocrlf false
git rm --cached -r .
git reset --hard

.eslintrc.js.prettierrc文件中的"endOfLine": "auto"设置对我有用。

文件.eslintrc.js应该有:

rules: {
/*  ...the other code is omitted for the brevity */
'arrow-body-style': [1, 'as-needed'],
'import/extensions': 'off',
'prettier/prettier': [
'error',
{
semi: false,
singleQuote: true,
useTabs: true,
endOfLine: 'auto', /* this setting should be included */
},
],

文件.prettierrc应该有:

{
"semi": false,
"trailingComma": "all",
"singleQuote": true,
"useTabs": true,
"tabWidth": 2,
"endOfLine": "auto" /* this setting should be included */
}

对我来说,我通过设置&;endoline &;: &;lf&;在。prettierrc文件。

如果你想要更改为LF,并且你正在使用VS Code,你可以这样对每个文件执行:

使用VS CODE从CRLF更改为LF的图形