Oczekiwano podziałów wiersza na „LF”, ale odnaleziono styl „CRLF”

156

Podczas używania eslint w projekcie gulp napotkałem problem z takim błędem
Expected linebreaks to be 'LF' but found 'CRLF' linebreak-stylei używam środowiska Windows do uruchomionego gulp, a cały dziennik błędów znajduje się poniżej

 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

Dołączam również plik extra.js jako błąd wskazujący na możliwy błąd.

function getWindowHeight() {
    return window.innerHeight;
}

getWindowHeight();
SaiKiran
źródło

Odpowiedzi:

202

Sprawdź, czy masz linebreak-styleskonfigurowaną regułę jak poniżej w swoim .eslintrc lub w kodzie źródłowym:

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

Ponieważ pracujesz w systemie Windows, możesz zamiast tego użyć tej reguły:

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

Zapoznaj się z dokumentacją z linebreak-style:

Podczas programowania z wieloma osobami, z których każdy ma różne edytory, aplikacje VCS i systemy operacyjne, może się zdarzyć, że różne zakończenia wierszy są zapisywane przez którykolwiek z wymienionych (może się to szczególnie zdarzyć, gdy używasz razem wersji SourceTree dla Windows i Mac).

Łamania wierszy (nowe wiersze) używane w systemie operacyjnym Windows to zwykle powrót karetki (CR), po którym następuje wysunięcie wiersza (LF), co powoduje, że jest to powrót karetki do wiersza (CRLF), podczas gdy Linux i Unix używają prostego wysuwu wiersza (LF). Odpowiednie sekwencje sterujące to "\n"(dla LF) i "\r\n"dla (CRLF).

Jest to reguła, którą można naprawić automatycznie. --fixOpcja w linii poleceń automatycznie rozwiązuje problemów zgłaszanych przez tę regułę.

Ale jeśli chcesz zachować CRLFzakończenia linii w swoim kodzie (tak jak pracujesz w systemie Windows), nie używaj tej fixopcji.

Dheeraj Vepakomma
źródło
To bardziej hack. Druga odpowiedź @The Coder jest poprawna. Musisz zmienić konfigurację projektu
user959690
124

Uważam, że jest to przydatne (gdzie chciałem zignorować przesunięcia wiersza i nie zmieniać żadnych plików), aby zignorować je w .eslintrc przy użyciu stylu łamania linii zgodnie z tą odpowiedzią: https://stackoverflow.com/a/43008668/1129108

module.exports = {
  extends: 'google',
  quotes: [2, 'single'],
  globals: {
    SwaggerEditor: false
  },
  env: {
    browser: true
  },
  rules:{
    "linebreak-style": 0
  }
};
Koder
źródło
To. Dzięki za rozwiązanie
blfuentes
84

Jeśli używasz vscode i korzystasz z systemu Windows , polecam kliknięcie opcji w prawym dolnym rogu okna i ustawienie jej na LF z CRLF . Ponieważ nie powinniśmy wyłączać konfiguracji tylko w celu usunięcia błędów w systemie Windows

Jeśli nie widzisz LF / CLRF, kliknij prawym przyciskiem pasek stanu i wybierz Edytor końca wiersza.

menu

Pan Perfekcyjny
źródło
4
Jak ustawić tę konfigurację na globalną w jednym projekcie? muszę to zrobić dla każdego pliku
BJAA
1
Wydaje się, że globalne ustawienie w VSCode to:, Settings -> Text Editor -> Files -> Eolustawione na \n. Wydaje się, że dotyczy to tylko nowych plików, nadal będziesz musiał ręcznie przełączać każdy istniejący plik.
V. Rubinetti
Zaakceptowana odpowiedź (@Dheeraj Vepakomma) i ta obie pomogły mi, uzupełniając mój problem. Dzięki!
Rodrigo.A92
11

Właśnie utworzyłem autocrlfparametr w pliku false.gitconfig i ponownie skonfigurowałem kod. Zadziałało!

[core] autocrlf = false

vnxyz
źródło
8

Zdarzyło się ze mną, bo biegałem git config core.autocrlf truei zapomniałem wrócić.

Potem, kiedy sprawdzam / ściągam nowy kod, cały LF (linia przerwania w Uniksie) został zastąpiony przez CRLF (linia przerwania w Windows).

Uruchomiłem linter i wszystkie komunikaty o błędach są Expected linebreaks to be 'LF' but found 'CRLF'

Aby rozwiązać problem, sprawdziłem autocrlfwartość, uruchamiając git config --list | grep autocrlfi otrzymałem:

core.autocrlf=true
core.autocrlf=false

I edycja globalnego GIT config ~/.gitconfigi zastąpione autocrlf = trueprzez autocrlf = false.

Potem poszedłem do mojego projektu i wykonałem następujące czynności (zakładając kod w src/folderze):

CURRENT_BRANCH=$(git branch | grep \* | cut -d ' ' -f2);
rm -rf src/*
git checkout $CURRENT_BRANCH src/
Abdennour TOUMI
źródło
8

Jeśli chcesz to w crlf (Windows Eol), przejdź do Plik -> Preferencje -> Ustawienia. Wpisz „end of line” w zakładce User i upewnij się, że Files: Eol jest ustawione na \ r \ n, a jeśli używasz rozszerzenia Prettier, upewnij się, że Prettier: End of Line jest ustawione na crlf . wprowadź opis obrazu tutajNa koniec dodaj tę regułę do pliku eslintrc:'linebreak-style': ['error', 'windows'] wprowadź opis obrazu tutaj

SPRZĘGŁO
źródło
1
Głosowano
"przejdź do Plik -> Preferencje -> Ustawienia" W jakiej aplikacji należy to zrobić?
JeffreyPia
6

Jeśli używasz vscode, polecam kliknięcie opcji w prawym dolnym rogu okna i ustawienie jej na LF z CRLF ... to naprawiło moje błędy

Athif Shaffy
źródło
gdzie dokładnie to jest?
KansaiRobot
2
to rozwiązanie dla mnie! 10x
Barbu Barbu
1
To rozwiązało mój problem.
Richard Vergis
2

Jeśli używasz WebStorm i używasz systemu Windows kliknąć ustawienia / edytor / styl kodu / kartę ogólną i wybrać z menu rozwijanego opcję „okna (\ r \ n). Te kroki dotyczą również Ridera”.

wprowadź opis obrazu tutaj

binary_fm
źródło
0

Ta sama sytuacja miała miejsce, gdy używałem VSCode z eslint. Jeśli używasz VSCode,

1 - Kliknij obszar, którego nazwa może być zarówno LF, jak i CRLF, gdzie w prawym dolnym rogu VScode.

2 - Wybierz LF z menu rozwijanego.

To zadziałało dla mnie.

wprowadź opis obrazu tutaj

Serhan C.
źródło