tslint dit que les appels à console.log ne sont pas autorisés - Comment puis-je autoriser cela?

101

Je viens de commencer à utiliser create-react-app avec tapuscript

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

et la configuration par défaut de tslint.json n'autorise pas console.log ().

Comment puis-je (pour l'instant) activer console.log?

La documentation à ce sujet se trouve sur https://palantir.github.io/tslint/rules/no-console/ . Mais ils ne disent pas où mettre cette ligne:

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

J'ai cherché et trouvé cette syntaxe de fichier de configuration tslint.json , alors j'ai essayé ceci:

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

Dans une tentative d'obtenir des messages de journal qui ne seraient que des avertissements. Mais cela n'a pas fonctionné.

J'ai commenté les quelques lignes de console.log () que j'ai, mais je souhaiterai pouvoir le faire à l'avenir.

PatS
la source

Réponses:

198

Ajoutez // tslint:disable-next-line:no-consolela ligne juste avant vos appels console.logpour éviter le message d'erreur une seule fois.

Si vous souhaitez désactiver complètement la règle, ajoutez ce qui suit à votre tslint.json(probablement dans votre dossier racine):

{
    "rules": {
        "no-console": false
    }
}
Christian Ivicevic
la source
6
Je ne suis pas sûr de ce qui s'est passé mais maintenant "no-console": false ne fonctionne pas pour moi. J'ai trouvé un moyen de contourner le problème, c'est de le mettre // tslint:disable:no-consoleen haut du fichier.
PatS
10
"no-console": false fonctionne pour moi, mais je dois redémarrer "npm start" pour qu'il prenne effet.
jlb
2
"no-console": falsene fonctionne pas pour moi, même avec npm run start.
Eric Fulmer
18
@EricFulmer a mis cela dans le nœud "jsRules". "jsRules": {"no-console": false},
billb
J'ai ajouté la règle jsRuleset fait une nouvelle yarn startavant que les erreurs ne disparaissent. Je ne sais pas lequel de ceux-ci l'a fait.
Byron Wall
27

Pour ceux d'entre vous qui viennent ici avec une base de code mixte de javascript et dactylographié.

Vous devrez peut-être définir l'option 'no-console' dans jsRules, objet de règles jslints pour les fichiers javascript, c'est-à-dire qu'il existe des objets de règles séparés pour javascript et 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
la source
mais - quel est le but de cette chose?
roberto tomás
De jsRules, ou pas de console?
Lee Brindley
no-console - il semble (je l'ai recherché) qu'il n'est là que pour vous avertir que les messages de la console n'appartiennent pas au code de production. Cela en fait un peu une règle discutable chaque fois que votre env n'est pas produit
roberto tomás
Je comprends votre point de vue, dans une certaine mesure. Une chose à considérer est que la console ne fait pas partie du langage javascript, elle est généralement implémentée dans les moteurs javascript, c'est le point cependant - elle ne fait pas partie du langage javascript, vous créez une dépendance dans votre code qui peut exister ou non . Cela dit, je peux voir une utilisation de cette règle.
Lee Brindley
@ robertotomás, Cette règle est basée sur la meilleure pratique consistant à ne pas avoir de messages console.log dans votre code. Le code de production ne devrait pas avoir cela, donc cela vous permet de savoir que vous n'êtes pas prêt. Vous pouvez avoir deux configurations tslint une qui l'autorise et une autre qui ne le permet pas. J'ai une logger.infofonction qui appelle console.log(donc un wrapper) qui me permet d'activer ou de désactiver facilement la journalisation pour l'ensemble de l'application. Je ne dis pas que c'est la meilleure pratique, juste quelque chose que j'ai fait. Cela facilite également l'intégration avec un autre enregistreur tel que github.com/krakenjs/beaver-logger .
PatS
8

Ajoutez ce qui suit à votre tslint.json

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

C'est la syntaxe correcte pour définir la règle sans console (ou toute autre règle d'ailleurs) mais uniquement avec un avertissement plutôt qu'une erreur (changez évidemment les options pour ce que vous voulez)

"no-console": {
    "severity": "warning",
    "options": [
        "log",
        "error",
        "debug",
        "info",
        "time",
        "timeEnd",
        "trace"
    ]
},
Liran H
la source
Cela fonctionne parfaitement comme avertissement. BTW, cela n'est pas documenté dans la documentation tslint.
nelson6e65
1

dans typeScript version 3, mettez à jour tslint.json sous la règle de clé comme ci-dessous:

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

de cette façon, vous spécifiez simplement debug, time, timeEnd, trace à ne pas utiliser, si dans votre tslint par défaut "info" est dans la liste, supprimez-le.

alvéomaster
la source
1
C'est ainsi que cela devrait être fait comme indiqué dans la documentation palantir.github.io/tslint/rules/no-console
Christopher Grigg le
1

La façon dont je gère la règle tslint "sans console" est par fichier que j'ai trouvé pratique et isolé dans la phase de développement.

Dès que j'ai besoin d'utiliser le premier console.log (); Visual Studio Code montre l'option à ajouter:

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

console.log ();

Donc ici, je supprime simplement "-next-line" et cette commande couvrira tout le fichier.

// tslint: disable: no-console

console.log ();

J'espère que cela aide comme alternative de désactiver la fonctionnalité pour l'ensemble de l'application.

RON

Domiserver
la source
0

Selon la documentation: https://eslint.org/docs/user-guide/getting-started#configuration

  • "off" ou 0 - désactiver la règle
  • "warn" ou 1 - active la règle comme avertissement (n'affecte pas le code de sortie)
  • "error" ou 2 - activer la règle comme erreur (le code de sortie sera 1)

Au fait, votre configuration correcte serait

{
  "rules": {
    "no-console": false
  }
}
Loretoparisi
la source
0

si // tslint:disable-next-line:no-consolecela ne fonctionne pas, essayez avec// eslint:disable-next-line:no-console

Adel Balbisi
la source
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
    }
 }

entrez la description de l'image ici

Rashid Iqbal
la source