预期的线路将是' LF'但发现了CRLF'断行式

时间:2016-06-15 04:55:29

标签: javascript gulp eslint line-endings

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

13 个答案:

答案 0 :(得分:154)

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

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

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

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

请参阅linebreak-style的{​​{3}}:

  

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

     

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

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

但是如果您希望在代码中保留CRLF行结尾(因为您正在使用Windows),请不要使用fix选项。

答案 1 :(得分:96)

根据以下答案,我发现它很有用(我想忽略换行符而不更改任何文件)在.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
  }
};

答案 2 :(得分:41)

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

上的错误而关闭配置

答案 3 :(得分:15)

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

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

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

答案 4 :(得分:4)

只需在.gitconfig文件autocrlf中设置false参数,然后重新编写代码。奏效了!

[core] autocrlf = false

答案 5 :(得分:3)

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

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

我跑了短毛绒,并且所有错误消息都是Expected linebreaks to be 'LF' but found 'CRLF'

为解决此问题,我通过运行autocrlf检查了git config --list | grep 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/

答案 6 :(得分:3)

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

1-单击VScode右下方的名称可以为LF或CRLF的区域。

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

对我有用。

enter image description here

答案 7 :(得分:3)

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

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

enter image description here

答案 8 :(得分:1)

如果要在 crlf 中使用它(Windows Eol),请转到“文件”->“首选项”->“设置”。在“用户”标签中输入“行尾”,并确保将文件:Eol 设置为 \ r \ n ,如果您使用的是Prettier扩展名,请确保< strong>更漂亮:行尾设置为 crlf enter image description here最后,在您的eslintrc文件上,添加以下规则:'linebreak-style': ['error', 'windows'] enter image description here

答案 9 :(得分:0)

如果您使用的是vscode,建议您单击窗口右下角的选项,然后将其从CRLF设置为LF。这可以修复我的错误

答案 10 :(得分:0)

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

enter image description here

答案 11 :(得分:0)

尝试使用 linter 的 --fix 标志来解决问题。

<块引用>

eslint filePath --fix

答案 12 :(得分:0)

git config core.autocrlf false

git rm --cached -r .

git reset --hard