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

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.


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
  }
};

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


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


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/

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



"przejdź do Plik -> Preferencje -> Ustawienia" W jakiej aplikacji należy to zrobić?
JeffreyPia


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


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.