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.

PatS
źródło

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
    }
}
Christian Ivicevic
źródło
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
  }
}
Lee Brindley
źródło
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",
      } 
   }
}
Liu Xuan
źródło
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"
    ]
},
Liran H.
źródło
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ń.

alveomaster
źródło
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

Domiserver
źródło
0

Zgodnie z dokumentacją: https://eslint.org/docs/user-guide/getting-started#configuration

  • „off” lub 0 - wyłącz regułę
  • „ostrzeż” lub 1 - włącz regułę jako ostrzeżenie (nie wpływa na kod zakończenia)
  • „błąd” lub 2 - włącz regułę jako błąd (kod zakończenia to 1)

Nawiasem mówiąc, twoja poprawna konfiguracja byłaby

{
  "rules": {
    "no-console": false
  }
}
loretoparisi
źródło
0

jeśli // tslint:disable-next-line:no-consolenie działa, spróbuj z// eslint:disable-next-line:no-console

Adel Balbisi
źródło
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

Rashid Iqbal
źródło