当在gulp项目中使用eslint时,我遇到过这样的错误问题 预期换行符是“LF”,但发现“CRLF”换行风格,我使用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();

检查你是否在你的.eslintrc或源代码中配置了如下换行样式的规则:

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

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

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

请参阅换行样式的文档:

When developing with a lot of people all having different editors, VCS applications and operating systems it may occur that different line endings are written by either of the mentioned (might especially happen when using the windows and mac versions of SourceTree together). The linebreaks (new lines) used in windows operating system are usually carriage returns (CR) followed by a line feed (LF) making it a carriage return line feed (CRLF) whereas Linux and Unix use a simple line feed (LF). The corresponding control sequences are "\n" (for 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并且你在Windows上,我建议你单击窗口右下角的选项,并将其从CRLF设置为LF。因为我们不应该仅仅为了删除Windows上的错误而关闭配置

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


发生在我身上,因为我运行git配置核心。这是真的,我忘记了回头。

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

我运行linter,所有错误消息都是预期换行符为“LF”,但发现“CRLF”

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

core.autocrlf=true
core.autocrlf=false

我编辑了全局GIT配置~/。Gitconfig,并将selflf = true替换为selflf = false。

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

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

只是在.gitconfig文件中的自专制参数为假,并重新克隆了代码。它工作!

(核心) 独裁者= false


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


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


如果你想在crlf (Windows Eol),去文件->首选项->设置。在User选项卡中输入“line end of line”,并确保Files: Eol设置为\r\n,如果您使用的是Prettier扩展,请确保Prettier: line end of line设置为crlf。最后,在你的eslintrc文件中,添加以下规则:'linebreak-style': ['error', 'windows']


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

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

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

这对我来说很有效。


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

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

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

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

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


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

eslint filePath——修复


Git配置核心。autocrlf假

Git rm——cached -r。

Git重置——很难


在我的情况下(vue.js项目,使用vue-cli创建),lint问题预期换行符是“LF”,但发现“CRLF”换行风格与pretty相关。 从版本>= 2更漂亮的替换所有行结尾“lf”:https://prettier.io/docs/en/options.html#end-of-line

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

Git:我设置了Git配置全局核心。autocrlf真实 eslint:在.eslintrc.js文件中配置:

      module.exports = {
      rules: {
        'linebreak-style': ['error', 'windows'],
      },
    };

最后在prettier.config.js中:

module.exports = {
    endOfLine: "crlf",
};

提示:如果没有,请确保您已经安装了图片中的Git。 您可以将其他功能作为默认,您可以选择visual studio代码作为默认编辑器。这对你以后很有帮助。

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

卸载Visual Studio Code仍然会保留旧的设置和扩展!完全删除Windows上的Visual Studio代码

卸载的Visual Studio

本机>本地盘(C) Users > CurrentUser > AppData > Local > Programs > Microsoft VS Code Unins000.exe或从控制面板卸载它 本机>本地盘(C) Users > CurrentUser > AppData > Local > Roaming 代码=>文件夹应该删除它 这台PC >本地盘(C) Users > CurrentUser > .vscode =>文件夹应该删除它 重新安装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文件中的“endoline”:“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,你可以这样逐个文件执行:


在我的例子中,LF规则是在pom.xml中的maven-checkstyle-plugin读取的文件中设置的。 未设置环境变量${skipCheckstyle}。 这样我就跳过了整个检查。

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
    <skip>${skipCheckstyle}</skip>
    <configLocation>${top.dir}/src/main/config/checkstyle/checker.xml</configLocation>