tslint dice che le chiamate a console.log non sono consentite - Come lo consento?


101

Ho appena iniziato a usare l'app create-react con il dattiloscritto

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

e la configurazione predefinita tslint.json non consente console.log ().

Come posso (per ora) abilitare console.log?

I documenti per questo sono su https://palantir.github.io/tslint/rules/no-console/ . Ma non dicono dove mettere questa riga:

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

Ho cercato e trovato questa sintassi del file di configurazione tslint.json , quindi ho provato questo:

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

Nel tentativo di ottenere messaggi di registro che sarebbero solo avvisi. Ma non ha funzionato.

Ho commentato le poche righe di console.log () che ho ma vorrò essere in grado di farlo in futuro.

Risposte:


198

Aggiungi // tslint:disable-next-line:no-consolela linea subito prima delle chiamate a console.logper evitare il messaggio di errore solo una volta.

Se desideri disabilitare completamente la regola, aggiungi quanto segue al tuo tslint.json(molto probabilmente nella tua cartella principale):

{
    "rules": {
        "no-console": false
    }
}

6
Non sono sicuro di cosa sia successo ma ora "no-console": false non funziona per me. Ho trovato una soluzione da mettere // tslint:disable:no-consolein cima al file.
PatS

10
"no-console": false funziona per me, ma devo riavviare "npm start" affinché abbia effetto.
jlb

2
"no-console": falsenon funziona per me, anche con npm run start.
Eric Fulmer

18
@EricFulmer lo ha inserito nel nodo "jsRules". "jsRules": {"no-console": false},
billb

Ho aggiunto la regola jsRulese ho fatto una nuova yarn startprima che gli errori andassero via. Non sono sicuro di quale di quelli sia stato.
Byron Wall

27

Per quelli di voi che vengono qui con un codice base misto di JavaScript e dattiloscritto.

Potrebbe essere necessario definire l'opzione "no-console" in jsRules, oggetto regole jslints per file javascript, ovvero ci sono oggetti regole separati per 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
  }
}

ma - qual è lo scopo di questa cosa?
roberto tomás

Di jsRules o no-console?
Lee Brindley

no-console - sembra (l'ho cercato) che sia lì solo per avvertirti che i messaggi della console non appartengono al codice di produzione. Questo rende una regola discutibile ogni volta che il tuo env non è prod
roberto tomás

Capisco il tuo punto, in una certa misura. Una cosa da considerare è che la console non fa parte del linguaggio javascript, di solito è implementata nei motori javascript, questo è il punto però - non fa parte del linguaggio javascript, stai creando una dipendenza nel tuo codice che può o non può esistere . Detto questo, posso vedere un uso per questa regola.
Lee Brindley

@ robertotomás, Questa regola si basa sulla best practice di non avere messaggi console.log nel codice. Il codice di produzione non dovrebbe avere questo, quindi questo ti consente di sapere che non sei pronto. Potresti avere due configurazioni tslint, una che lo consente e un'altra che non lo consente. Ho una logger.infofunzione che chiama console.log(quindi un wrapper) che mi consente di abilitare o disabilitare facilmente la registrazione per l'intera app. Non sto dicendo che questa sia la migliore pratica, solo qualcosa che ho fatto. Inoltre, rende più facile l'integrazione con un altro logger come github.com/krakenjs/beaver-logger .
PatS

8

Aggiungi quanto segue al tuo file tslint.json

{
   "rules": {
      "no-console": {
         "severity": "warning",
      } 
   }
}

6

Questa è la sintassi corretta per definire la regola senza console (o qualsiasi altra regola per quella materia) ma solo con un avvertimento piuttosto che un errore (ovviamente cambia le opzioni come vuoi)

"no-console": {
    "severity": "warning",
    "options": [
        "log",
        "error",
        "debug",
        "info",
        "time",
        "timeEnd",
        "trace"
    ]
},

Funziona perfettamente come avvertimento. BTW, questo non è documentato nella documentazione tslint.
nelson6e65

1

nella versione 3 di TypeScript aggiorna tslint.json con la regola chiave come di seguito:

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

in questo modo devi solo specificare debug, time, timeEnd, trace da non utilizzare, se nel tuo tslint predefinito "info" è nell'elenco rimuovilo.


1
Questo è il modo in cui dovrebbe essere fatto come indicato nei documenti palantir.github.io/tslint/rules/no-console
Christopher Grigg,

1

Il modo in cui gestisco la regola "no-console" di tslint è per file che ho trovato conveniente e isolato nella fase di sviluppo.

Non appena ho bisogno di usare il primo console.log (); Visual Studio Code mostra l'opzione per aggiungere:

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

console.log ();

Quindi qui elimino semplicemente "-next-line" e questo comando coprirà l'intero file.

// tslint: disable: no-console

console.log ();

Spero che sia utile in alternativa disabilitare la funzione per l'intera app.

RON



0

se // tslint:disable-next-line:no-consolenon funziona, prova con// eslint:disable-next-line:no-console


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
    }
 }

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.