Очікується, що розриви лінії будуть "LF", але знайдено "CRLF" linebreak-style


156

Під час використання eslint в проекті gulp у мене виникла проблема з такою помилкою,
Expected linebreaks to be 'LF' but found 'CRLF' linebreak-styleі я використовую середовище Windows для запущеної глотки, і весь журнал помилок наведено нижче

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

Відповіді:


202

Перевірте, чи є у вас 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опцію.


Це більше хак. Інша відповідь від @The Coder правильна. Потрібно змінити конфігурацію проекту
user959690

124

Мені здалося корисним (де я хотів ігнорувати канали рядків і не змінювати жодні файли) ігнорувати їх у .eslintrc, використовуючи стиль linebreak відповідно до цієї відповіді: 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. Це, мабуть, стосується лише нових файлів, але вам доведеться перемикати кожен наявний файл вручну.
В.

Прийнята відповідь (@Deeraj Vepakomma) і ця одна допомогли мені, коли вони доповнили моє питання. Дякую!
Rodrigo.A92

11

Щойно зробив autocrlfпарам у файлі false.gitconfig і повернув код. Це спрацювало!

[core] autocrlf = false


8

Сталося зі мною, бо я побіг git config core.autocrlf trueі забув повернутися назад.

Після цього, коли я перевіряв / витягував новий код, весь LF (лінія перерви в Unix) був замінений на CRLF (Break line у ​​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 ), перейдіть у меню Файл -> Налаштування -> Налаштування. Введіть "кінець рядка" на вкладці "Користувач" і переконайтеся, що для файлів: Eol встановлено значення \ r \ n, і якщо ви використовуєте розширення "Prettier", переконайтеся, що " Prettier: End of Line" встановлено на crlf . введіть тут опис зображенняНарешті, у свій файл eslintrc додайте це правило:'linebreak-style': ['error', 'windows'] введіть тут опис зображення


1
Проголосували за корисні фотографії, 10х
беншабатноам

"перейдіть у меню Файл -> Налаштування -> Налаштування" У якому додатку це потрібно робити?
JeffreyPia

6

Якщо ви використовуєте vscode, я б рекомендував вам натиснути опцію в нижній правій частині вікна та встановити її на LF від CRLF .. це виправлено мої помилки


де саме це?
KansaiRobot

2
це виправлення для мене! 10x
Barbu Barbu

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

2

Якщо ви використовуєте WebStorm і перебуваєте в ОС 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.