tslint, console.log çağrılarına izin verilmediğini söylüyor - Buna nasıl izin verebilirim?


105

Typcript ile create-react-app kullanmaya başladım

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

ve varsayılan tslint.json yapılandırması console.log () işlevine izin vermez.

Console.log'u (şimdilik) nasıl etkinleştirebilirim?

Bunun için dokümanlar https://palantir.github.io/tslint/rules/no-console/ adresindedir . Ama bu satırı nereye koyacaklarını söylemiyorlar:

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

Bu tslint.json yapılandırma dosyası sözdizimini aradım ve buldum , bu yüzden şunu denedim:

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

Yalnızca uyarı olacak günlük mesajlarını alma girişiminde. Ama bu işe yaramadı.

Sahip olduğum birkaç console.log () satırını yorumladım, ancak gelecekte bunu yapabilmek isteyeceğim.

Yanıtlar:


207

Hata mesajını yalnızca bir kez önlemek // tslint:disable-next-line:no-consoleiçin aramalarınızın hemen önüne satır ekleyin console.log.

Kuralı tamamen devre dışı bırakmak istiyorsanız, aşağıdakileri ekleyin tslint.json(büyük olasılıkla kök klasörünüze):

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

6
Ne olduğundan emin değilim ama şimdi "konsol yok": yanlış benim için çalışmıyor. // tslint:disable:no-consoleDosyanın en üstüne koymak için bir çözüm buldum .
PatS

10
"no-console": false benim için çalışıyor, ancak etkili olması için "npm start" ı yeniden başlatmam gerekiyor.
jlb

2
"no-console": falsebenim için bile çalışmıyor npm run start.
Eric Fulmer

18
@EricFulmer bunu "jsRules" düğümüne koydu. "jsRules": {"no-console": false},
billb

Hatalar kaybolmadan önce kuralı ekledim ve bir tazeleme jsRulesyaptım yarn start. Bunlardan hangisinin yaptığından emin değilim.
Byron Wall

28

Buraya karışık bir javascript kod tabanı ve typcript ile gelenler için.

JsRules'de 'konsonsuz' seçeneğini, javascript dosyaları için jslints kural nesnesini tanımlamanız gerekebilir, yani javascript ve typecript için ayrı kural nesneleri vardır.

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

ama - bu şeyin amacı nedir?
roberto tomás

JsRules mi yoksa konsolsuz mu?
Lee Brindley

no-console - öyle görünüyor ki (baktım) sadece sizi konsol mesajlarının üretim koduna ait olmadığı konusunda uyarmak için var. Bu tür bir
ortam, ortamınız üretilmediği

Demek istediğini bir dereceye kadar anlıyorum. Dikkate alınması gereken bir şey, konsolun javascript dilinin bir parçası olmadığı, genellikle javascript motorlarında uygulandığı, asıl mesele bu - javascript dilinin bir parçası değil, kodunuza var olan veya olmayan bir bağımlılık yaratıyorsunuz. . Bununla birlikte, bu kuralın bir kullanımını görebiliyorum.
Lee Brindley

1
@ robertotomás, Bu kural, kodunuzda console.log mesajlarının bulunmaması şeklindeki en iyi uygulamaya dayanmaktadır. Üretim kodunun buna sahip olmaması gerekir, bu nedenle bu, üretiminizin hazır olmadığını bilmenizi sağlar. Biri ona izin veren, diğeri izin vermeyen iki tslint yapılandırmanız olabilir. Bir var logger.infoişlevi olduğunu aramaları console.logbeni kolayca etkinleştirmek veya Tüm uygulamanın devre dışı günlüğü izin veren (bir sarmalayıcı böylece). Bunun en iyi uygulama olduğunu söylemiyorum, sadece yaptığım bir şey. Ayrıca, github.com/krakenjs/beaver-logger gibi başka bir kaydedici ile entegre olmayı da kolaylaştırır .
PatS

8

Aşağıdakileri ekleyin: tslint.json

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

6

Bu, konsonsuz kuralı (veya bu konuda başka herhangi bir kuralı) tanımlamak için doğru sözdizimidir, ancak yalnızca bir hata yerine bir uyarı ile (açıkçası seçenekleri istediğiniz gibi değiştirin)

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

Bu mükemmel bir uyarı olarak çalışır. BTW, bu tslint belgelerinde belgelenmemiştir.
nelson6e65


1

Tslint "konsonsuz" kuralını işleme şeklim , geliştirme aşamasında uygun ve izole olduğunu bulduğum dosya başına.

İlk console.log () 'u kullanmam gerektiği anda; Visual Studio Code, ekleme seçeneğini gösterir:

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

console.log ();

Yani burada sadece "-sonraki-satırı" siliyorum ve bu komut tüm dosyayı kapsayacak.

// tslint: devre dışı bırak: konsol yok

console.log ();

Umarım, tüm uygulama için özelliği devre dışı bırakmanın bir alternatif olarak yardımcı olur.

99,99



0

eğer // tslint:disable-next-line:no-consolebirlikte deneyin çalışmıyor// 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
    }
 }

görüntü açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.