tslint mówi, że wywołania console.log są niedozwolone - jak na to zezwolić?


102

Właśnie zacząłem używać aplikacji create-react-z maszyną

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

a domyślna konfiguracja tslint.json nie zezwala na console.log ().

Jak mogę (na razie) włączyć console.log?

Dokumentacja na ten temat znajduje się pod adresem https://palantir.github.io/tslint/rules/no-console/ . Ale nie mówią, gdzie umieścić tę linię:

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

Przeszukałem i znalazłem tę składnię pliku konfiguracyjnego tslint.json , więc próbowałem tego:

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

Próbując uzyskać komunikaty dziennika, które byłyby tylko ostrzeżeniami. Ale to nie zadziałało.

Skomentowałem kilka linii console.log (), ale będę chciał móc to zrobić w przyszłości.

Odpowiedzi:


200

Dodaj // tslint:disable-next-line:no-consolewiersz tuż przed wywołaniami, console.logaby zapobiec wyświetleniu komunikatu o błędzie tylko raz.

Jeśli chcesz całkowicie wyłączyć regułę, dodaj następujące informacje do swojego tslint.json(najprawdopodobniej w folderze głównym):

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

6
Nie jestem pewien, co się stało, ale teraz „brak konsoli”: fałsz nie działa dla mnie. Znalazłem obejście to umieszczenie // tslint:disable:no-consolena początku pliku.
PatS

10
„no-console”: false działa u mnie, ale muszę ponownie uruchomić „npm start”, aby zadziałało.
jlb

2
"no-console": falsenie działa dla mnie, nawet z npm run start.
Eric Fulmer

18
@EricFulmer umieścił to w węźle „jsRules”. "jsRules": {"no-console": false},
billb

Dodałem regułę do jsRulesi zrobiłem nową, yarn startzanim błędy zniknęły. Nie jestem pewien, który z nich to zrobił.
Byron Wall

28

Dla tych z Was, którzy przyjeżdżają tutaj z mieszaną bazą kodową JavaScript i maszynopisu.

Może być konieczne zdefiniowanie opcji „no-console” w jsRules, obiekcie reguł jslints dla plików javascript, tzn. Istnieją oddzielne obiekty reguł dla javascript i machinecript.

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

ale - jaki jest cel tego wszystkiego?
roberto tomás

Z jsRules, czy bez konsoli?
Lee Brindley

no-console - wygląda na to (sprawdziłem), że jest tylko po to, aby ostrzec, że komunikaty konsoli nie należą do kodu produkcyjnego. To sprawia, że ​​jest to wątpliwa zasada za każdym razem, gdy twoje środowisko nie jest
nakręcane

Do pewnego stopnia rozumiem twój punkt widzenia. Jedną rzeczą do rozważenia jest to, że konsola nie jest częścią języka javascript, zwykle jest implementowana w silnikach javascript, o to jednak chodzi - nie jest częścią języka javascript, tworzysz zależność w swoim kodzie, która może lub nie istnieje . Mając to na uwadze, widzę zastosowanie tej reguły.
Lee Brindley

@ robertotomás, ta reguła jest oparta na najlepszych praktykach, aby nie umieszczać w kodzie komunikatów console.log. Kod produkcyjny nie powinien tego mieć, więc dzięki temu wiesz, że nie jesteś gotowy do produkcji. Możesz mieć dwie konfiguracje tslint, jedną, która na to zezwala, a drugą, która nie. Mam logger.infofunkcję, która wywołuje console.log(czyli opakowanie), która pozwala mi łatwo włączać lub wyłączać rejestrowanie dla całej aplikacji. Nie mówię, że to najlepsza praktyka, po prostu coś, co zrobiłem. Ułatwia również integrację z innym rejestratorem, takim jak github.com/krakenjs/beaver-logger .
PatS

8

Dodaj następujące elementy do swojego tslint.json

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

6

To jest poprawna składnia do zdefiniowania reguły braku konsoli (lub jakiejkolwiek innej reguły w tym zakresie), ale tylko z ostrzeżeniem, a nie błędem (oczywiście zmień opcje na cokolwiek chcesz)

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

Działa to doskonale jako ostrzeżenie. Przy okazji, nie jest to udokumentowane w dokumentacji tslint.
nelson6e65

1

w TypeScript w wersji 3 zaktualizuj tslint.json pod kluczową regułą, jak poniżej:

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

w ten sposób po prostu określasz debug, time, timeEnd, ślad, który ma nie być używany, jeśli w domyślnym tslint "info" znajduje się na liście, po prostu go usuń.


1
To jest sposób, w jaki należy to zrobić, zgodnie z dokumentami palantir.github.io/tslint/rules/no-console
Christopher Grigg

1

Sposób, w jaki obsługuję regułę tslint „bez konsoli”, dotyczy pliku, który znalazłem, jest wygodny i izolowany w fazie rozwoju.

Jak tylko będę musiał użyć pierwszej console.log (); Visual Studio Code pokazuje opcję dodania:

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

console.log ();

Więc tutaj po prostu usuwam „-następną-linię” i to polecenie obejmie cały plik.

// tslint: disable: no-console

console.log ();

Mam nadzieję, że wyłączenie tej funkcji dla całej aplikacji pomoże jako alternatywa.

RON



0

jeśli // tslint:disable-next-line:no-consolenie działa, spróbuj z// 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
    }
 }

wprowadź opis obrazu tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.