预期的换行符为'LF',但发现'CRLF'的线条样式

Sai*_*ran 130 javascript line-endings eslint gulp

当在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
Run Code Online (Sandbox Code Playgroud)

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

function getWindowHeight() {
    return window.innerHeight;
}

getWindowHeight();
Run Code Online (Sandbox Code Playgroud)

Dhe*_*.S. 175

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

/*eslint linebreak-style: ["error", "unix"]*/
Run Code Online (Sandbox Code Playgroud)

由于您正在使用Windows,因此您可能希望使用此规则:

/*eslint linebreak-style: ["error", "windows"]*/
Run Code Online (Sandbox Code Playgroud)

请参阅文件linebreak-style:

当开发时很多人都有不同的编辑器,VCS应用程序和操作系统,可能会出现不同的行结尾都是由上述任何一个编写的(当使用Windows和Mac版本的SourceTree时可能会发生这种情况).

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

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

但是,如果您希望CRLF在代码中保留行尾(当您在Windows上工作时),请不要使用该fix选项.

  • 这更像是一种黑客行为。@The Coder 的另一个答案是正确的。您需要更改项目的配置 (5认同)
  • 我不确定这个解决方案是否适用于多平台开发人员,其中一些开发人员在 Unix 上工作,另一些在 Windows 上工作。我认为这应该最好由版本控制而不是 IDE 来处理,否则 Lint 是一个有争议的问题。@vnxyz 的回答有效,国际海事组织应该接受。 (2认同)

The*_*der 108

我发现它很有用(我想忽略换行符而不是更改任何文件)在.eslintrc中使用linebreak-style忽略它们,如下所示:https://stackoverflow.com/a/43008668/1129108

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

  • 实际上,第二高(且未选择)的答案,就我而言,我正在一个存储库中工作,其中主要工作人员在 Mac 上工作,而我在 PC 上进行代码审查,因此并不想更改任何内容。 (4认同)
  • 很遗憾,最高票数的答案禁用了换行符的 linting,而不是解决问题 (3认同)

Mr_*_*ect 60

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

  • VSCode中的全局设置好像是:`Settings -> Text Editor -> Files -> Eol`,设置为`\n`。这似乎只适用于新文件,但您仍然需要手动切换每个现有文件。 (5认同)
  • 如何在一个项目中将此配置设置为全局?我必须为每个文件执行此操作 (4认同)

小智 23

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

  rules: {
    'linebreak-style':0,
  }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


CLU*_*HER 20

If you want it in crlf (Windows Eol), go to File -> Preferences -> Settings. Type "end of line" in the User tab and make sure Files: Eol is set to \r\n and if you're using the Prettier extension, make sure Prettier: End of Line is set to crlf. 在此处输入图片说明 Finally, on your eslintrc file, add this rule: 'linebreak-style': ['error', 'windows'] 在此处输入图片说明

  • 为有用的照片投票,10x (4认同)

har*_*nat 19

这是管理此错误的一个非常好的方法。您可以将以下行放在 .eslintrc.js 文件中。

根据操作系统,它将采用适当的行尾。

rules: {
        'linebreak-style': ['error', process.platform === 'win32' ? 'windows' : 'unix'],
 }
Run Code Online (Sandbox Code Playgroud)

  • @斯科特谢谢!我没有看到任何缺点。 (3认同)

小智 17

git config core.autocrlf false

git rm --cached -r 。

git重置——硬

  • 考虑添加关于这些 git 命令如何解决问题中描述的问题的解释? (4认同)
  • @user4815162342我很确定当你 git clone 时它​​会弄乱自动转换换行符,基本上这会关闭它 (2认同)

vnx*_*xyz 8

autocrlf在.gitconfig文件中设置参数并重新编写false了代码。有效!

[core] autocrlf = false


Ser*_* C. 8

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

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

2 - 从下拉菜单中选择 LF。

这对我有用。

在此处输入图片说明


Abd*_*UMI 5

和我一起发生是因为我跑步了git config core.autocrlf true,我忘记了回来。

之后,当我签出/拉出新代码时,所有的LF(Unix中的换行)都被CRLF(Windows中的换行)代替。

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

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

core.autocrlf=true
core.autocrlf=false
Run Code Online (Sandbox Code Playgroud)

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

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

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


Ath*_*ffy 5

如果您使用的是vscode,建议您单击窗口右下角的选项,然后将其从CRLF设置为LF。

  • 这就是我的解决办法!10倍 (2认同)

Leo*_*son 5

如果您想更改为LF并且正在使用 VS Code,您可以按文件执行此操作,如下所示:

显示如何使用 VS CODE 从 CRLF 更改为 LF 的图形