Quebras de linha esperadas como 'LF', mas localizadas no estilo de quebra de linha 'CRLF'

156

Ao usar eslint no projeto gulp, encontrei um problema com erro como este
Expected linebreaks to be 'LF' but found 'CRLF' linebreak-stylee estou usando o ambiente Windows para o gulp em execução e todo o log de erros é fornecido abaixo

 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

Também incluí o arquivo extra.js como o erro que indica um possível erro.

function getWindowHeight() {
    return window.innerHeight;
}

getWindowHeight();
SaiKiran
fonte

Respostas:

202

Verifique se você tem a linebreak-styleregra configurada conforme abaixo, no seu .eslintrc ou no código-fonte:

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

Como você está trabalhando no Windows, convém usar esta regra:

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

Consulte a documentação de linebreak-style:

Ao desenvolver com muitas pessoas, todas com editores, aplicativos VCS e sistemas operacionais diferentes, pode ocorrer que diferentes terminações de linha sejam escritas por qualquer um dos mencionados (isso pode ocorrer especialmente ao usar as versões Windows e Mac do SourceTree juntas).

As quebras de linha (novas linhas) usadas no sistema operacional Windows geralmente são retornos de carro (CR) seguidos por um avanço de linha (LF), tornando-o um avanço de linha de retorno de carro (CRLF), enquanto o Linux e Unix usam um avanço de linha simples (LF). As sequências de controle correspondentes são "\n"(para LF) e "\r\n"para (CRLF).

Esta é uma regra que pode ser corrigida automaticamente. A --fixopção na linha de comando corrige automaticamente os problemas relatados por esta regra.

Mas se você deseja reter CRLFas terminações de linha no seu código (como você está trabalhando no Windows), não use a fixopção

Dheeraj Vepakomma
fonte
Isso é mais um truque. A outra resposta de @O codificador está correta. Você precisa alterar a configuração do projeto
user959690
124

Achei útil (onde eu queria ignorar feeds de linha e não alterar nenhum arquivo) ignorá-los no .eslintrc usando o estilo de quebra de linha, conforme esta resposta: https://stackoverflow.com/a/43008668/1129108

module.exports = {
  extends: 'google',
  quotes: [2, 'single'],
  globals: {
    SwaggerEditor: false
  },
  env: {
    browser: true
  },
  rules:{
    "linebreak-style": 0
  }
};
O codificador
fonte
Este. Agradecimentos para a solução
blfuentes
84

Se você estiver usando o vscode e estiver no Windows , recomendo que você clique na opção no canto inferior direito da janela e defina-a como LF a partir do CRLF . Porque não devemos desativar a configuração apenas para remover erros no Windows

Se você não vir LF / CLRF, clique com o botão direito do mouse na barra de status e selecione Fim da linha do editor.

cardápio

Sr. perfeito
fonte
4
Como definir essa configuração para global em um projeto? eu tenho que fazer isso para cada arquivo
BJAA
1
A configuração global no VSCode parece ser:, Settings -> Text Editor -> Files -> Eoldefinida como \n. No entanto, isso parece se aplicar apenas a novos arquivos, você ainda precisará alternar manualmente cada arquivo existente.
V. Rubinetti
A resposta aceita (@Dheeraj Vepakomma) e essa me ajudaram, pois complementaram minha questão. Obrigado!
Rodrigo.A92 23/06
11

Acabei de autocrlfcriar param no arquivo false.gitconfig e reclonou o código. Funcionou!

[core] autocrlf = false

vnxyz
fonte
8

Aconteceu comigo porque eu corri git config core.autocrlf truee esqueci de voltar.

Depois disso, quando eu faço checkout / pull do novo código, todo o LF (quebra de linha no Unix) foi substituído pelo CRLF (quebra de linha no Windows).

Corri o linter e todas as mensagens de erro são Expected linebreaks to be 'LF' but found 'CRLF'

Para corrigir o problema, verifiquei o autocrlfvalor executando git config --list | grep autocrlfe obtive:

core.autocrlf=true
core.autocrlf=false

Editei a configuração global do GIT ~/.gitconfige substituí autocrlf = truepor autocrlf = false.

Depois disso, fui ao meu projeto e fiz o seguinte (assumindo o código na src/pasta):

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

Se você quiser no crlf (Windows Eol), vá para Arquivo -> Preferências -> Configurações. Digite "fim de linha" na guia Usuário e verifique se Arquivos: Eol está definido como \ r \ n e se você estiver usando a extensão Prettier, verifique se Prettier: Fim de linha está definido como crlf . insira a descrição da imagem aquiPor fim, no seu arquivo eslintrc, adicione esta regra:'linebreak-style': ['error', 'windows'] insira a descrição da imagem aqui

CLUTCHER
fonte
1
Votado para ver as fotos úteis, 10x
benshabatnoam 20/04
"vá para Arquivo -> Preferências -> Configurações" Em que aplicativo isso deve ser feito?
JeffreyPia 24/04
6

Se você estiver usando o vscode, recomendo que você clique na opção no canto inferior direito da janela e defina-a como LF a partir da CRLF .. isso corrigiu meus erros

Athif Shaffy
fonte
onde exatamente é isso?
KansaiRobot
2
essa é a solução para mim! 10x
Barbu Barbu
1
Corrigiu o meu problema.
Richard Vergis 16/01
2

Se você estiver usando o WebStorm e estiver no Windows , recomendo que você clique em configurações / editor / estilo de código / guia geral e selecione "janelas (\ r \ n) no menu suspenso. Essas etapas também se aplicam ao Rider.

insira a descrição da imagem aqui

binary_fm
fonte
0

A mesma situação ocorreu quando eu estava usando o VSCode com eslint. Se você usa o VSCode,

1 - Clique na área em que esse nome pode ser LF ou CRLF, na parte inferior direita do VScode.

2 - Selecione LF no menu suspenso.

Isso funcionou para mim.

insira a descrição da imagem aqui

Serhan C.
fonte