tslint sagt, dass Aufrufe von console.log nicht erlaubt sind - Wie erlaube ich das?


101

Ich habe gerade angefangen, die Create-React-App mit Typoskript zu verwenden

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

und die Standardkonfiguration tslint.json erlaubt console.log () nicht.

Wie kann ich (vorerst) console.log aktivieren?

Die Dokumente hierzu finden Sie unter https://palantir.github.io/tslint/rules/no-console/ . Aber sie sagen nicht, wo sie diese Zeile setzen sollen:

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

Ich habe diese Syntax der Konfigurationsdatei tslint.json gesucht und gefunden , also habe ich Folgendes versucht:

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

Bei dem Versuch, Protokollnachrichten abzurufen, handelt es sich lediglich um Warnungen. Aber das hat nicht funktioniert.

Ich habe die wenigen Zeilen von console.log () auskommentiert, möchte dies aber in Zukunft tun können.

Antworten:


197

Fügen Sie // tslint:disable-next-line:no-consoledie Zeile direkt vor Ihren Anrufen hinzu console.log, um die Fehlermeldung nur einmal zu vermeiden.

Wenn Sie die Regel vollständig deaktivieren möchten, fügen Sie Folgendes hinzu tslint.json(höchstwahrscheinlich in Ihrem Stammordner):

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

6
Ich bin nicht sicher, was passiert ist, aber jetzt "keine Konsole": false funktioniert bei mir nicht. Ich habe festgestellt, dass eine Problemumgehung darin besteht, sie // tslint:disable:no-consoleoben in die Datei aufzunehmen.
PatS

10
"no-console": false funktioniert bei mir, aber ich muss "npm start" neu starten, damit es wirksam wird.
jlb

2
"no-console": falsefunktioniert bei mir auch mit nicht npm run start.
Eric Fulmer

18
@EricFulmer hat das in den Knoten "jsRules" eingefügt. "jsRules": {"no-console": false},
billb

Ich fügte die Regel hinzu jsRulesund machte eine neue, yarn startbevor die Fehler verschwanden. Ich bin mir nicht sicher, wer es getan hat.
Byron Wall

27

Für diejenigen unter Ihnen, die mit einer gemischten Codebasis aus Javascript und Typoskript hierher kommen.

Möglicherweise müssen Sie die Option 'keine Konsole' in jsRules definieren, jslints Regelobjekt für Javascript-Dateien, dh es gibt separate Regelobjekte für Javascript und Typoskript.

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

aber - was ist der Zweck dieser Sache?
Roberto Tomás

Von jsRules oder ohne Konsole?
Lee Brindley

no-console - es scheint (ich habe es nachgeschlagen), dass es nur dazu dient, Sie zu warnen, dass Konsolennachrichten nicht in den Produktionscode gehören. Das macht es zu einer fragwürdigen Regel, wenn Ihre
Umgebung

Ich verstehe Ihren Standpunkt bis zu einem gewissen Grad. Eine zu berücksichtigende Sache ist, dass die Konsole nicht Teil der Javascript-Sprache ist, sondern normalerweise in Javascript-Engines implementiert ist. Dies ist jedoch der Punkt - sie ist nicht Teil der Javascript-Sprache, Sie backen eine Abhängigkeit in Ihren Code, die möglicherweise vorhanden ist oder nicht . Nachdem dies gesagt ist, kann ich eine Verwendung für diese Regel sehen.
Lee Brindley

@ robertotomás, Diese Regel basiert auf der bewährten Methode, keine console.log-Nachrichten in Ihrem Code zu haben. Der Produktionscode sollte dies nicht haben, damit Sie wissen, dass Ihr Produkt nicht bereit ist. Möglicherweise haben Sie zwei tslint-Konfigurationen, eine, die dies zulässt, und eine andere, die dies nicht zulässt. Ich habe eine logger.infoFunktion, die aufruft console.log(also einen Wrapper), mit der ich die Protokollierung für die gesamte App einfach aktivieren oder deaktivieren kann. Ich sage nicht, dass dies eine bewährte Methode ist, sondern nur etwas, das ich getan habe. Dies erleichtert auch die Integration in einen anderen Logger wie github.com/krakenjs/beaver-logger .
PatS

8

Fügen Sie Folgendes zu Ihrem hinzu tslint.json

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

6

Dies ist die richtige Syntax, um die Regel ohne Konsole (oder eine andere Regel für diese Angelegenheit) zu definieren, jedoch nur mit einer Warnung und nicht mit einem Fehler (ändern Sie die Optionen offensichtlich nach Ihren Wünschen).

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

Dies funktioniert perfekt als Warnung. Übrigens ist dies nicht in der tslint-Dokumentation dokumentiert.
nelson6e65

1

In TypeScript Version 3 aktualisieren Sie tslint.json unter der folgenden Schlüsselregel:

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

Auf diese Weise geben Sie einfach Debug, Time, TimeEnd und Trace an, die nicht verwendet werden sollen. Wenn in Ihrem Standard-Tslint "info" in der Liste enthalten ist, entfernen Sie es einfach.


1
Dies sollte so erfolgen, wie in den Dokumenten palantir.github.io/tslint/rules/no-console
Christopher Grigg

1

Die Art und Weise, wie ich mit der "No-Console" -Regel von tslint umgehe, ist pro Datei, die ich gefunden habe, praktisch und in der Entwicklungsphase isoliert.

Sobald ich die erste console.log () verwenden muss; Visual Studio Code zeigt die Option zum Hinzufügen:

// tslint: disable-next-line: keine Konsole

console.log ();

Hier lösche ich einfach "-next-line" und dieser Befehl deckt die gesamte Datei ab.

// tslint: disable: keine Konsole

console.log ();

Ich hoffe, es hilft als Alternative, die Funktion für die gesamte App zu deaktivieren.

RON



0

Wenn // tslint:disable-next-line:no-consolees nicht funktioniert, versuchen Sie es mit// 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
    }
 }

Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.