预期换行符为“ LF”,但发现为“ CRLF”换行符样式


155

在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();

Answers:


201

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

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

由于您使用的是Windows,因此您可能想改用以下规则:

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

请参阅文件linebreak-style

当许多人使用不同的编辑器,VCS应用程序和操作系统进行开发时,可能会出现由提到的任何一个编写的行尾不同的情况(尤其是在同时使用Windows和Mac版本的SourceTree时可能会发生这种情况)。

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

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

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


这更像是一个hack。@The Coder的另一个答案是正确的。您需要更改项目的配置
user959690

123

我发现按以下答案使用换行符样式在.eslintrc中忽略它们很有用(在这里我想忽略换行而不更改任何文件):https ://stackoverflow.com/a/43008668/1129108

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

这个。感谢您的解决方案
blfuentes

84

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

如果看不到LF / CLRF,请右键单击状态栏,然后选择“行尾编辑器”。

菜单


4
如何在一个项目中将此配置设置为全局?我必须为每个文件执行此操作
BJAA

1
VSCode中的全局设置似乎是:Settings -> Text Editor -> Files -> Eol,设置为\n。不过,这似乎仅适用于新文件,您仍然必须手动切换每个现有文件。
V. Rubinetti

接受的答案(@Dheeraj Vepakomma)和这个答案都对我有所帮助,因为它们在我的问题上起到了补充作用。谢谢!
Rodrigo.A92

11

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

[core] autocrlf = false


8

和我一起发生是因为我跑步了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

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

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

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

8

如果要在crlf(Windows Eol)中使用它,请转到“文件”->“首选项”->“设置”。在“用户”选项卡中键入“行尾”,并确保“ 文件:Eol”设置为\ r \ n,如果您使用的是Prettier扩展名,请确保将“ Prettier:行尾”设置为crlf在此处输入图片说明最后,在您的eslintrc文件上,添加以下规则:'linebreak-style': ['error', 'windows'] 在此处输入图片说明


1
为有用的照片投票10x
benshabatnoam,

“转到文件->首选项->设置”应在哪个应用程序中完成?
JeffreyPia


2

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

在此处输入图片说明


0

当我在eslint中使用VSCode时,发生了相同的情况。如果您使用VSCode,

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

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

那对我有用。

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.