javascript - Forventede linjeskift å være 'LF', men fant 'CRLF' linebreak-style


Når jeg bruker eslint i gulp-prosjektet har jeg støtt på et problem med en feil som denne
Forventet linjeskift til å være 'LF' men fant 'CRLF' linebreak-style og jeg bruker Windows-miljøet for å kjøre gulp, og hele feilloggen er gitt nedenfor

 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

Jeg har også inkludert extra.js-filen siden feilen indikerer mulig feil.

function getWindowHeight() {
    return window.innerHeight;
}

getWindowHeight();

Svar #1

Sjekk om du har linebreak-style-regelen konfigurert som nedenfor enten i din .eslintrc eller i kildekoden:

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

Siden du jobber på Windows, kan det hende du vil bruke denne regelen i stedet:

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

Se dokumentasjonen for linebreak-style:

Når man utvikler med mange personer som alle har forskjellige editorer, VCS-applikasjoner og operativsystemer, kan det hende at ulike linjeavslutninger blir skrevet av noen av de nevnte (dette kan spesielt skje når man bruker Windows- og Mac-versjonene av SourceTree sammen).

Linjeskiftene (nye linjer) som brukes i Windows-operativsystemet er vanligvis vognturer (CR) etterfulgt av et linjeskift (LF), noe som gjør det til en vogntur-linjeskift (CRLF), mens Linux og Unix bruker et enkelt linjeskift (LF). De tilsvarende kontrollsekvensene er "\n" (for LF) og "\n" for (CRLF).

Dette er en regel som kan fikses automatisk. Alternativet --fix på kommandolinjen fjerner automatisk problemer rapportert av denne regelen.

Men hvis du ønsker å beholde CRLF-linjeskift i koden din (siden du jobber på Windows), ikke bruk fix-alternativet.

Svar #2

Jeg syntes det var nyttig (der jeg ønsket å ignorere linjeskift og ikke endre noen filer) å ignorere dem i .eslintrc ved å bruke linebreak-style som i dette svaret: https://stackoverflow.com/a/43008668/1129108

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

Svar #3

Hvis du bruker vscode og du er på Windows, vil jeg anbefale deg å klikke på alternativet nederst til høyre i vinduet og sette det til LF fra CRLF. For vi bør ikke slå av konfigurasjonen bare for å fjerne feil på Windows

Hvis du ikke ser LF/CLRF, høyreklikk på statuslinjen og velg Editor End of Line.

Svar #4

Her er en virkelig god måte å håndtere denne feilen på. Du kan sette følgende linje i .eslintrc.js-filen.

Basert på operativsystemet vil det bruke passende linjeskift.

rules: {
        'linebreak-style': ['error', process.platform === 'win32' ? 'windows' : 'unix'],
 }

Svar #5

Hvis du vil ha det i crlf (Windows Eol), gå til Fil -> Preferanser -> Innstillinger. Skriv "end of line" i Bruker-fanen og sørg for at Files: Eol er satt til \r\n, og hvis du bruker Prettier-utvidelsen, sørg for at Prettier: End of Line er satt til crlf.

Til slutt, på eslintrc-filen din, legg til denne regelen: 'linebreak-style': ['error', 'windows']

Svar #6

legg til i regelen vår i .eslintrc-filen 'linebreak-style':0 i Vue js

  rules: {
    'linebreak-style':0,
  }

Svar #7

git config core.autocrlf false

git rm --cached -r .

git reset --hard

Svar #8

Jeg har nettopp satt autocrlf-parameteren i .gitconfig-filen til false og klonet koden på nytt. Det fungerte!

[core] autocrlf=false

Svar #9

Den samme situasjonen oppsto da jeg brukte VSCode med eslint. Hvis du bruker VSCode,

1 - Klikk på området der navnet kan være enten LF eller CRLF nederst til høyre i VScode.

2 - Velg LF fra rullegardinmenyen.

Det har fungert for meg.

Svar #10

Skjedde med meg fordi jeg kjørte git config core.autocrlf true og jeg glemte å reversere det tilbake.

Etter det, når jeg sjekker ut/henter ny kode, ble alle LF (linjeskift i Unix) erstattet med CRLF (linjeskift i Windows).

Jeg kjørte linter, og alle feilmeldingene er Forventet linjeskift til å være 'LF' men fant 'CRLF'

For å fikse problemet, sjekket jeg autocrlf-verdien ved å kjøre git config --list | grep autocrlf og jeg fikk:

core.autocrlf=true
core.autocrlf=false

Jeg redigerte den globale GIT-konfigurasjonen ~/.gitconfig og erstattet autocrlf=true med autocrlf=false.

Etter det gikk jeg til prosjektet mitt og gjorde følgende (forutsatt koden i src/-mappen):

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

Svar #11

Hvis du bruker VSCode, vil jeg anbefale deg å klikke på alternativet nederst til høyre i vinduet og sette det til LF fra CRLF.. dette løste mine feil

Svar #12

Hvis du vil bytte til LF og du bruker VS Code, kan du gjøre det per fil på denne måten:

Relaterte artikler