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


157

При использовании 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();

Ответы:


204

Проверьте, настроите ли вы 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опцию.


Это больше взломать. Другой ответ от @ The Coder правильный. Нужно изменить
конфиг

125

Мне было полезно (где я хотел игнорировать переводы строк и не изменять какие-либо файлы) игнорировать их в .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, я бы порекомендовал вам щелкнуть опцию в правом нижнем углу окна и установить для нее значение LF из CRLF . Потому что мы не должны выключать конфигурацию только ради удаления ошибок в Windows

Если вы не видите LF / CLRF, щелкните правой кнопкой мыши строку состояния и выберите «Редактор конца строки».

меню


4
Как установить глобальную конфигурацию в одном проекте? Я должен сделать это для каждого файла
BJAA

1
Глобальная настройка в VSCode выглядит так:, Settings -> Text Editor -> Files -> Eolустановлено в \n. Похоже, это относится только к новым файлам, вам все равно придется переключать каждый существующий файл вручную.
В. Рубинетти

Принятый ответ (@Dheeraj Vepakomma) и этот помог мне, поскольку они дополнили мою проблему. Спасибо!
Rodrigo.A92

11

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

[core] autocrlf = false


8

Случилось со мной, потому что я побежал, 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/

8

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


1
Проголосовал за полезные фотографии, 10х
беншабатноам,

«Перейдите в Файл -> Настройки -> Настройки». В каком приложении это должно быть сделано?
JeffreyPia

6

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


где именно это?
KansaiRobot

2
это исправление для меня! 10x
Барбу Барбу

1
Это исправило мою проблему.
Ричард Вергис

2

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

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


0

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

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

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

Это сработало для меня.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.