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.

PatS
quelle

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
    }
}
Christian Ivicevic
quelle
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
  }
}
Lee Brindley
quelle
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",
      } 
   }
}
Liu Xuan
quelle
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"
    ]
},
Liran H.
quelle
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.

Alveomaster
quelle
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

Domiserver
quelle
0

Gemäß den Dokumenten: https://eslint.org/docs/user-guide/getting-started#configuration

  • "aus" oder 0 - schalten Sie die Regel aus
  • "warn" oder 1 - Aktivieren Sie die Regel als Warnung (hat keinen Einfluss auf den Exit-Code).
  • "Fehler" oder 2 - Schalten Sie die Regel als Fehler ein (Exit-Code ist 1)

Übrigens wäre Ihr korrektes Setup

{
  "rules": {
    "no-console": false
  }
}
loretoparisi
quelle
0

Wenn // tslint:disable-next-line:no-consolees nicht funktioniert, versuchen Sie es mit// eslint:disable-next-line:no-console

Adel Balbisi
quelle
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

Rashid Iqbal
quelle