tslint diz que chamadas para console.log não são permitidas - Como faço para permitir isso?

101

Acabei de começar a usar create-react-app com typescript

create-react-app my-app --scripts-version=react-scripts-ts

e a configuração padrão tslint.json não permite console.log ().

Como posso (por enquanto) habilitar console.log?

Os documentos para isso estão em https://palantir.github.io/tslint/rules/no-console/ . Mas eles não dizem onde colocar esta linha:

    "no-console": [true, "log", "error"]

Eu pesquisei e encontrei esta sintaxe do arquivo de configuração tslint.json , então tentei isto:

"rules": {
    "no-console": [true, "warning"]
}

Na tentativa de obter mensagens de log que seriam apenas avisos. Mas isso não funcionou.

Comentei as poucas linhas console.log () que tenho, mas gostaria de poder fazer isso no futuro.

PatS
fonte

Respostas:

198

Adicione // tslint:disable-next-line:no-consolea linha imediatamente antes de suas chamadas console.logpara evitar a mensagem de erro apenas uma vez.

Se quiser desativar a regra totalmente, adicione o seguinte ao seu tslint.json(provavelmente na pasta raiz):

{
    "rules": {
        "no-console": false
    }
}
Christian Ivicevic
fonte
6
Não tenho certeza do que aconteceu, mas agora "no-console": false não está funcionando para mim. Eu descobri que uma solução é colocar // tslint:disable:no-consoleno topo do arquivo.
PatS
10
"no-console": false funciona para mim, mas tenho que reiniciar "npm start" para que tenha efeito.
jlb de
2
"no-console": falsenão funciona para mim, mesmo com npm run start.
Eric Fulmer
18
@EricFulmer coloque isso no nó "jsRules". "jsRules": {"no-console": false},
billb
Eu adicionei a regra jsRulese fiz uma nova yarn startantes que os erros fossem embora. Não tenho certeza de qual deles fez isso.
Byron Wall
27

Para aqueles que vêm aqui com uma base de código mista de javascript e typescript.

Você pode precisar definir a opção 'no-console' em jsRules, objeto de regras jslints para arquivos javascript, ou seja, existem objetos de regras separados para javascript e typescript.

//tslint.json

{
  "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"], //Example... 
  "rules": {
    "no-console": false //Disable for typescript
  },
  "jsRules": {
    "no-console": false //Disable for javascript
  }
}
Lee Brindley
fonte
mas - qual é o propósito disso?
roberto tomás
Com jsRules ou sem console?
Lee Brindley
no-console - parece (eu pesquisei) que está lá apenas para avisar que as mensagens do console não pertencem ao código de produção. Isso torna a regra questionável sempre que seu ambiente não for prod
roberto tomás
Eu vejo seu ponto, até certo ponto. Uma coisa a se considerar é que o console não faz parte da linguagem javascript, geralmente é implementado em motores javascript, mas esse é o ponto - não faz parte da linguagem javascript, você está criando uma dependência em seu código que pode ou não existir . Com isso dito, posso ver uma utilidade para esta regra.
Lee Brindley
@ robertotomás, Esta regra é baseada na melhor prática de não ter mensagens console.log em seu código. O código de produção não deveria ter isso, então isso permite que você saiba que o produto não está pronto. Você pode ter duas configurações tslint, uma que permite isso e outra que não. Tenho uma logger.infofunção que chama console.log(portanto, um wrapper) que me permite habilitar ou desabilitar facilmente o registro em log para todo o aplicativo. Não estou dizendo que essa é a melhor prática, apenas algo que fiz. Também facilita a integração com outro registrador, como github.com/krakenjs/beaver-logger .
PatS
8

Adicione o seguinte ao seu tslint.json

{
   "rules": {
      "no-console": {
         "severity": "warning",
      } 
   }
}
Liu Xuan
fonte
6

Esta é a sintaxe correta para definir a regra de não console (ou qualquer outra regra para esse assunto), mas apenas com um aviso em vez de um erro (obviamente, altere as opções para o que quiser)

"no-console": {
    "severity": "warning",
    "options": [
        "log",
        "error",
        "debug",
        "info",
        "time",
        "timeEnd",
        "trace"
    ]
},
Liran H
fonte
Isso funciona perfeitamente como um aviso. BTW, isso não está documentado na documentação tslint.
nelson6e65
1

no typeScript versão 3, atualize tslint.json sob a regra principal como abaixo:

"no-console": [
    true,
    "debug",
    "time",
    "timeEnd",
    "trace"
],

desta forma, você apenas especifica debug, time, timeEnd, trace a não ser usado, se em seu tslint padrão "info" estiver na lista, basta removê-lo.

alveomaster
fonte
1
É assim que deve ser feito, conforme indicado nos docs palantir.github.io/tslint/rules/no-console
Christopher Grigg
1

A maneira como eu lido com a regra tslint "no-console" é por arquivo, o que eu achei conveniente e isolado na fase de desenvolvimento.

Assim que eu precisar usar o primeiro console.log (); O código do Visual Studio mostra a opção de adicionar:

// tslint: disable-next-line: no-console

console.log ();

Então aqui eu apenas excluo "-next-line" e este comando cobrirá todo o arquivo.

// tslint: disable: no-console

console.log ();

Espero que ajude como uma alternativa para desativar o recurso para todo o aplicativo.

RON

Domiserver
fonte
0

De acordo com a documentação: https://eslint.org/docs/user-guide/getting-started#configuration

  • "off" ou 0 - desativa a regra
  • "warn" ou 1 - ativa a regra como um aviso (não afeta o código de saída)
  • "erro" ou 2 - ativa a regra como um erro (o código de saída será 1)

A propósito, sua configuração correta seria

{
  "rules": {
    "no-console": false
  }
}
Loretoparisi
fonte
0

se // tslint:disable-next-line:no-consolenão funcionar, tente com// eslint:disable-next-line:no-console

Adel Balbisi
fonte
0
  {
    "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"],
    "linterOptions": {
        "exclude": [
            "config/**/*.js",
            "node_modules/**/*.ts",
            "coverage/lcov-report/*.js"
        ]
    },
    "rules": {
        "no-console": false
    },
    "jsRules": {
        "no-console": false
    }
 }

insira a descrição da imagem aqui

Rashid Iqbal
fonte