Si aspettava che le interruzioni di riga fossero "LF" ma ho trovato lo stile di interruzione di riga "CRLF"


156

Quando ho usato eslint nel progetto gulp ho riscontrato un problema con errore come questo
Expected linebreaks to be 'LF' but found 'CRLF' linebreak-stylee sto usando l'ambiente Windows per il gulp in esecuzione e l'intero registro degli errori è riportato di seguito

 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

Ho anche incluso il file extra.js come errore che indica un possibile errore.

function getWindowHeight() {
    return window.innerHeight;
}

getWindowHeight();

Risposte:


203

Controlla se la linebreak-styleregola è configurata come di seguito nel tuo .eslintrc o nel codice sorgente:

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

Dato che stai lavorando su Windows, potresti voler usare questa regola invece:

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

Fare riferimento alla documentazione di linebreak-style:

Quando si sviluppa con molte persone che hanno tutti editor, applicazioni VCS e sistemi operativi diversi, può capitare che vengano scritte diverse terminazioni di linea da uno dei citati (potrebbe accadere soprattutto quando si usano insieme le versioni Windows e Mac di SourceTree).

Le interruzioni di riga (nuove righe) utilizzate nel sistema operativo Windows sono in genere ritorni a capo (CR) seguiti da un avanzamento riga (LF) che lo rende un avanzamento riga ritorno a capo (CRLF) mentre Linux e Unix utilizzano un avanzamento riga semplice (LF). Le sequenze di controllo corrispondenti sono "\n"(per LF) e "\r\n"per (CRLF).

Questa è una regola che può essere risolta automaticamente. L' --fixopzione sulla riga di comando risolve automaticamente i problemi segnalati da questa regola.

Ma se desideri conservare le CRLFterminazioni di riga nel codice (mentre lavori su Windows) non utilizzare l' fixopzione.


Questo è più di un trucco. L'altra risposta di @The Coder è corretta. Devi cambiare la configurazione del progetto
user959690

125

Ho trovato utile (dove volevo ignorare i feed di riga e non modificare alcun file) ignorarli in .eslintrc usando lo stile di interruzione di riga come da questa risposta: https://stackoverflow.com/a/43008668/1129108

module.exports = {
  extends: 'google',
  quotes: [2, 'single'],
  globals: {
    SwaggerEditor: false
  },
  env: {
    browser: true
  },
  rules:{
    "linebreak-style": 0
  }
};

Questo. Grazie per la soluzione
blfuentes,

84

Se stai usando vscode e sei su Windows, ti consiglio di fare clic sull'opzione in basso a destra nella finestra e impostarlo su LF da CRLF . Perché non dovremmo disattivare la configurazione solo per rimuovere errori su Windows

Se non vedi LF / CLRF, fai clic con il pulsante destro del mouse sulla barra di stato e seleziona Editor fine riga.

menù


4
Come impostare questa configurazione su globale in un progetto? devo farlo per ogni file
BJAA

1
L'impostazione globale in VSCode sembra essere:, Settings -> Text Editor -> Files -> Eolimpostata su \n. Questo sembra valere solo per i nuovi file, tuttavia dovrai comunque cambiare manualmente ogni file esistente.
V. Rubinetti,

La risposta accettata (@Dheeraj Vepakomma) e questa mi hanno aiutato entrambi a completare il mio problema. Grazie!
Rodrigo.A92,

11

Ho appena creato il autocrlfparametro nel file false.gitconfig e richiuso il codice. Ha funzionato!

[core] autocrlf = false


8

È successo con me perché sono corso git config core.autocrlf truee ho dimenticato di riverire.

Successivamente, quando eseguo il checkout / pull nuovo codice, tutto l'LF (break line in Unix) è stato sostituito da CRLF (Break line in Windows).

Ho eseguito linter e tutti i messaggi di errore lo sono Expected linebreaks to be 'LF' but found 'CRLF'

Per risolvere il problema, ho verificato il autocrlfvalore eseguendo git config --list | grep autocrlfe ho ottenuto:

core.autocrlf=true
core.autocrlf=false

Ho modificato la configurazione GIT globale ~/.gitconfige sostituita autocrlf = trueda autocrlf = false.

Successivamente, sono andato al mio progetto e ho fatto quanto segue (assumendo il codice nella src/cartella):

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

8

Se lo vuoi in crlf (Windows Eol), vai su File -> Preferenze -> Impostazioni. Digita "end of line" nella scheda User e assicurati che Files: Eol sia impostato su \ r \ n e se stai usando l'estensione Prettier, assicurati che Prettier: End of Line sia impostato su crlf . inserisci qui la descrizione dell'immagineInfine, sul tuo file eslintrc, aggiungi questa regola:'linebreak-style': ['error', 'windows'] inserisci qui la descrizione dell'immagine


1
Votato per l'utile foto, 10x
benshabatnoam il

"vai su File -> Preferenze -> Impostazioni" In quale app dovrebbe essere fatto?
JeffreyPia,

6

Se stai usando vscode, ti consiglio di fare clic sull'opzione in basso a destra nella finestra e impostarla su LF da CRLF..questo risolto i miei errori


dov'è esattamente questo?
KansaiRobot

2
questa è la soluzione per me! 10x
Barbu Barbu,

1
Ha risolto il mio problema.
Richard Vergis,

2

Se stai usando WebStorm e sei su Windows, ti consiglio di fare clic su impostazioni / editor / stile di codice / scheda generale e selezionare "windows (\ r \ n) dal menu a discesa. Questi passaggi si applicano anche a Rider.

inserisci qui la descrizione dell'immagine


0

La stessa situazione si è verificata quando stavo usando VSCode con eslint. Se usi VSCode,

1 - Fare clic sull'area in cui il nome può essere sia LF che CRLF nella parte inferiore destra del VScode.

2 - Selezionare LF dal menu a discesa.

Per me ha funzionato.

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.