Ожидаемые разрывы строк - LF, но обнаружены символы разрыва строки CRLF

При использовании eslint в проекте gulp у меня возникла проблема с такой ошибкой
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();

person SaiKiran    schedule 15.06.2016    source источник


Ответы (13)


Проверьте, настроено ли правило linebreak-style, как показано ниже, в вашем .eslintrc или в исходном коде:

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

Поскольку вы работаете в Windows, вы можете вместо этого использовать это правило:

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

См. документацию linebreak-style:

При разработке с большим количеством людей, имеющих разные редакторы, приложения VCS и операционные системы, может возникнуть ситуация, когда разные окончания строк написаны одним из упомянутых (особенно это может случиться при совместном использовании версий SourceTree для Windows и Mac).

Разрывы строк (новые строки), используемые в операционной системе Windows, обычно представляют собой символы возврата каретки (CR), за которыми следует перевод строки (LF), что делает его переводом строки возврата каретки (CRLF), тогда как Linux и Unix используют простой перевод строки (LF). Соответствующие управляющие последовательности - "\n" (для LF) и "\r\n" для (CRLF).

Это правило исправимо автоматически. Параметр --fix в командной строке автоматически устраняет проблемы, о которых сообщает это правило.

Но если вы хотите сохранить CRLF окончания строк в своем коде (как вы работаете в Windows), не используйте параметр fix.

person Dheeraj Vepakomma    schedule 15.06.2016
comment
Это больше похоже на взлом. Другой ответ @The Coder правильный. Вам необходимо изменить конфиг проекта - person user959690; 07.07.2020
comment
Я не уверен, работает ли это решение для многоплатформенных разработчиков, где некоторые разработчики работают в Unix, а некоторые - в Windows. Я думаю, что с этим лучше всего справиться с помощью контроля версий, а не IDE или Lint, это спорный вопрос. Ответ @vnxyz сработал и должен быть принят ИМО. - person MG Developer; 18.12.2020

Мне было полезно (где я хотел игнорировать переводы строк и не изменять какие-либо файлы) игнорировать их в .eslintrc с использованием стиля разрыва строки в соответствии с этим ответом: https://stackoverflow.com/a/43008668/1129108

module.exports = {
  extends: 'google',
  quotes: [2, 'single'],
  globals: {
    SwaggerEditor: false
  },
  env: {
    browser: true
  },
  rules:{
    "linebreak-style": 0
  }
};
person The Coder    schedule 20.06.2017
comment
Печально, но ответ, получивший наибольшее количество голосов, отключает линтинг разрыва строки вместо исправления проблемы. - person Cezary Daniel Nowak; 11.08.2020
comment
Фактически, второй по величине (и не выбранный) ответ, в моем случае я работал в репозитории, где основные люди, работавшие над ним, были на Mac, и я просматривал код на ПК, действительно не хотел ничего менять по этой причине . - person The Coder; 02.09.2020

Если вы используете vscode и находитесь в Windows, я бы порекомендовал вам щелкнуть параметр в правом нижнем углу окна и установить для него значение LF из CRLF. Потому что мы не должны отключать конфигурацию только для устранения ошибок в Windows.

Если вы не видите LF / CLRF, щелкните правой кнопкой мыши строку состояния и выберите Editor End of Line.

меню

person Mr_Perfect    schedule 20.09.2018
comment
Как установить глобальную конфигурацию в одном проекте? я должен сделать это для каждого файла - person Progs; 02.01.2019
comment
Глобальные настройки в VSCode выглядят так: Settings -> Text Editor -> Files -> Eol, установлено на \n. Похоже, что это применимо только к новым файлам, вам все равно придется переключать каждый существующий файл вручную. - person V. Rubinetti; 24.05.2019
comment
Принятый ответ (@Dheeraj Vepakomma) и этот оба помогли мне, поскольку они дополнили мою проблему. Спасибо! - person Rodrigo.A92; 23.06.2020

Если вы хотите, чтобы это было в crlf (Windows Eol), перейдите в меню «Файл» -> «Настройки» -> «Настройки». Введите "конец строки" на вкладке "Пользователь" и убедитесь, что для параметра Файлы: Eol установлено значение \ r \ n, а если вы используете расширение Prettier, убедитесь, что < strong> Prettier: End of Line установлен на crlf. введите описание изображения здесь Наконец, в свой файл eslintrc добавьте это правило: 'linebreak-style': ['error', 'windows'] введите описание изображения здесь

person CLUTCHER    schedule 19.10.2019
comment
Проголосовал за полезные фото, 10х - person benshabatnoam; 20.04.2020
comment
перейдите в Файл - ›Настройки -› Настройки В каком приложении это нужно сделать? - person JeffreyPia; 25.04.2020

Вот действительно хороший способ справиться с этой ошибкой. Вы можете поместить следующую строку в файл .eslintrc.js.

В зависимости от операционной системы он будет иметь соответствующие окончания строк.

rules: {
        'linebreak-style': ['error', process.platform === 'win32' ? 'windows' : 'unix'],
 }
person H_H    schedule 31.12.2020
comment
Это умный способ справиться с этой ошибкой с членами команды на компьютерах Mac и Windows. Есть ли обратная сторона, которую я не вижу? - person Scott; 18.05.2021
comment
@Scott Спасибо! Обратной стороны не вижу. - person H_H; 19.05.2021

Просто сделал autocrlf параметр в файле .gitconfig false и переклонировал код. Это сработало!

[core] autocrlf = false

person vnxyz    schedule 14.02.2019
comment
Ваше исправление сработало для меня, редактирование eslintrc для добавления стиля разрыва строки не сработало. - person MG Developer; 18.12.2020
comment
Это может вызвать больше проблем, чем решить, поскольку autocrlf очень полезен при смешивании Windows и Unix, поскольку инструменты Windows добавят инструменты crlf и unix lf. - person user959690; 18.02.2021

Произошло со мной, потому что я бежал 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/
person Abdennour TOUMI    schedule 14.11.2018

Если вы используете vscode, я бы порекомендовал вам выбрать опцию в правом нижнем углу окна и установить для него значение LF из CRLF .. это исправило мои ошибки

person Athif Shaffy    schedule 04.05.2019
comment
где именно это? - person KansaiRobot; 13.05.2019
comment
это исправление для меня! 10x - person Barbu Barbu; 13.06.2019
comment
Это устранило мою проблему. - person Richard Vergis; 16.01.2020

Такая же ситуация произошла, когда я использовал VSCode с eslint. Если вы используете VSCode,

1 - Щелкните область, имя которой может быть как LF, так и CRLF в правом нижнем углу VScode.

2 - Выберите LF из раскрывающегося меню.

У меня это сработало.

введите описание изображения здесь

person Serhan C.    schedule 09.07.2020

добавляем к нашему правилу в файле .eslintrc 'linebreak-style': 0 в Vue js

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

введите описание изображения здесь

person Francisco Estrada    schedule 03.04.2021

Если вы используете WebStorm и находитесь в Windows, я бы порекомендовал вам щелкнуть вкладку настройки / редактор / стиль кода / общие и выбрать «окна (\ r \ n) из раскрывающееся меню. Эти шаги также применимы к Rider.

введите описание изображения здесь

person binary_fm    schedule 11.06.2019

Попробуйте использовать флаг линтера --fix, чтобы решить проблему.

eslint filePath --fix

person user8818954    schedule 23.04.2021

git config core.autocrlf false

git rm --cached -r.

git reset - жесткий

person Hakan Yıldırım    schedule 27.04.2021
comment
Рассмотрите возможность добавления объяснения того, как эти команды git решают проблему, описанную в вопросе? - person JohnH; 28.04.2021