Linebreak yang diharapkan menjadi 'LF' tetapi ditemukan gaya linebreak 'CRLF'

156

Saat menggunakan eslint dalam proyek tegukan saya mengalami masalah dengan kesalahan seperti ini
Expected linebreaks to be 'LF' but found 'CRLF' linebreak-styledan saya menggunakan lingkungan Windows untuk tegukan yang sedang berjalan dan seluruh log kesalahan diberikan di bawah ini

 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

Saya juga menyertakan file extra.js sebagai kesalahan yang menunjukkan kemungkinan kesalahan.

function getWindowHeight() {
    return window.innerHeight;
}

getWindowHeight();
SaiKiran
sumber

Jawaban:

202

Periksa apakah Anda memiliki linebreak-styleaturan konfigurasi seperti di bawah ini di .eslintrc Anda atau dalam kode sumber:

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

Karena Anda bekerja pada Windows, Anda mungkin ingin menggunakan aturan ini sebagai gantinya:

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

Mengacu pada dokumentasi dari linebreak-style:

Ketika berkembang dengan banyak orang yang semuanya memiliki editor yang berbeda, aplikasi VCS dan sistem operasi mungkin terjadi bahwa ujung garis yang berbeda ditulis oleh salah satu dari yang disebutkan (terutama mungkin terjadi ketika menggunakan versi Windows dan mac dari SourceTree bersama-sama).

Linebreak (baris baru) yang digunakan dalam sistem operasi windows biasanya carriage return (CR) diikuti oleh line feed (LF) yang membuatnya menjadi carriage return line feed (CRLF) sedangkan Linux dan Unix menggunakan feed line sederhana (LF). Urutan kontrol yang sesuai adalah "\n"(untuk LF) dan "\r\n"untuk (CRLF).

Ini adalah aturan yang dapat diperbaiki secara otomatis. The --fixpilihan pada baris perintah otomatis perbaikan masalah yang dilaporkan oleh aturan ini.

Tetapi jika Anda ingin mempertahankan CRLFakhir baris dalam kode Anda (saat Anda bekerja pada Windows) jangan gunakan fixopsi.

Dheeraj Vepakomma
sumber
Ini lebih merupakan peretasan. Jawaban lain oleh @The Coder benar. Anda perlu mengubah konfigurasi proyek
user959690
124

Saya menemukan itu berguna (di mana saya ingin mengabaikan umpan baris dan tidak mengubah file apa pun) untuk mengabaikannya di .eslintrc menggunakan gaya-linebreak sesuai jawaban ini: https://stackoverflow.com/a/43008668/1129108

module.exports = {
  extends: 'google',
  quotes: [2, 'single'],
  globals: {
    SwaggerEditor: false
  },
  env: {
    browser: true
  },
  rules:{
    "linebreak-style": 0
  }
};
Sang Coder
sumber
Ini. Terima kasih atas solusinya
blfuentes
84

Jika Anda menggunakan vscode dan Anda menggunakan Windows, saya akan merekomendasikan Anda untuk mengklik opsi di kanan bawah jendela dan mengaturnya ke LF dari CRLF . Karena kita tidak boleh mematikan konfigurasi hanya demi menghapus kesalahan pada Windows

Jika Anda tidak melihat LF / CLRF, klik kanan bilah status dan pilih Editor End of Line.

Tidak bisa

Tuan sempurna
sumber
4
Bagaimana cara mengatur konfigurasi ini ke global dalam satu proyek? saya harus melakukan ini untuk setiap file
BJAA
1
Pengaturan global dalam VSCode tampaknya:, Settings -> Text Editor -> Files -> Eoldiatur ke \n. Ini tampaknya hanya berlaku untuk file baru, Anda masih harus beralih setiap file yang ada secara manual.
V. Rubinetti
Jawaban yang diterima (@Dheeraj Vepakomma) dan yang ini membantu saya saat mereka melengkapi masalah saya. Terima kasih!
Rodrigo.A92
11

Baru saja membuat autocrlfparam dalam file .gitconfig falsedan mengklon ulang kodenya. Berhasil!

[core] autocrlf = false

vnxyz
sumber
8

Terjadi dengan saya karena saya berlari git config core.autocrlf truedan saya lupa untuk kembali.

Setelah itu, ketika saya checkout / menarik kode baru, semua LF (break line di Unix) digantikan oleh CRLF (Break line di Windows).

Saya menjalankan linter, dan semua pesan kesalahan Expected linebreaks to be 'LF' but found 'CRLF'

Untuk memperbaiki masalah ini, saya memeriksa autocrlfnilai dengan menjalankan git config --list | grep autocrlfdan saya mendapat:

core.autocrlf=true
core.autocrlf=false

Saya mengedit konfigurasi GIT global ~/.gitconfigdan digantikan autocrlf = trueoleh autocrlf = false.

Setelah itu, saya pergi ke proyek saya dan melakukan hal berikut (dengan asumsi kode di src/folder):

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

Jika Anda menginginkannya di crlf (Windows Eol), buka File -> Preferences -> Settings. Ketik "end of line" di tab User dan pastikan Files: Eol diatur ke \ r \ n dan jika Anda menggunakan ekstensi Prettier, pastikan Prettier: End of Line diatur ke crlf . masukkan deskripsi gambar di siniTerakhir, pada file eslintrc Anda, tambahkan aturan ini:'linebreak-style': ['error', 'windows'] masukkan deskripsi gambar di sini

CLUTCHER
sumber
1
Dipilih untuk foto-foto yang bermanfaat, 10x
benshabatnoam
"pergi ke File -> Preferences -> Settings" Apa aplikasi ini harus dilakukan?
JeffreyPia
6

Jika Anda menggunakan vscode saya akan merekomendasikan Anda untuk mengklik opsi di kanan bawah jendela dan mengaturnya ke LF dari CRLF .. ini memperbaiki kesalahan saya

Athif Shaffy
sumber
dimana tepatnya ini?
KansaiRobot
2
itu perbaikan untuk saya! 10x
Barbu Barbu
1
Itu memperbaiki masalah saya.
Richard Vergis
2

Jika Anda menggunakan WebStorm dan Anda menggunakan Windows, saya akan merekomendasikan Anda untuk mengklik pengaturan / editor / gaya kode / tab umum dan pilih "windows (\ r \ n) dari menu dropdown. Langkah-langkah ini juga akan berlaku untuk Rider.

masukkan deskripsi gambar di sini

binary_fm
sumber
0

Situasi yang sama terjadi ketika saya menggunakan VSCode dengan eslint. Jika Anda menggunakan VSCode,

1 - Klik area yang namanya bisa LF atau CRLF di mana di kanan bawah VScode.

2 - Pilih LF dari menu drop-down.

Itu berhasil untuk saya.

masukkan deskripsi gambar di sini

Serhan C.
sumber