tslint mengatakan panggilan ke console.log tidak diizinkan - Bagaimana cara mengizinkannya?


102

Saya baru saja mulai menggunakan create-react-app dengan skrip jenis

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

dan konfigurasi tslint.json default tidak mengizinkan console.log ().

Bagaimana saya (untuk saat ini) mengaktifkan console.log?

Dokumen untuk ini ada di https://palantir.github.io/tslint/rules/no-console/ . Tetapi mereka tidak mengatakan di mana harus meletakkan baris ini:

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

Saya mencari dan menemukan sintaks file konfigurasi tslint.json ini , jadi saya mencoba ini:

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

Dalam upaya untuk mendapatkan pesan log yang hanya akan menjadi peringatan. Tapi itu tidak berhasil.

Saya telah mengomentari beberapa baris console.log () yang saya miliki tetapi saya ingin dapat melakukan ini di masa mendatang.

Jawaban:


200

Tambahkan // tslint:disable-next-line:no-consoledi baris tepat sebelum panggilan Anda console.loguntuk mencegah pesan kesalahan hanya sekali.

Jika Anda ingin menonaktifkan aturan sepenuhnya, tambahkan yang berikut ini ke Anda tslint.json(kemungkinan besar di folder root Anda):

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

6
Saya tidak yakin apa yang terjadi tetapi sekarang "no-console": false tidak berfungsi untuk saya. Saya telah menemukan solusi untuk meletakkan // tslint:disable:no-consoledi bagian atas file.
PatS

10
"no-console": false berfungsi untuk saya, tetapi saya harus memulai ulang "npm start" agar dapat diterapkan.
jlb

2
"no-console": falsetidak berhasil untuk saya, bahkan dengan npm run start.
Eric Fulmer

18
@EricFulmer meletakkannya di node "jsRules". "jsRules": {"no-console": false},
billb

Saya menambahkan aturan ke jsRulesdan melakukan penyegaran yarn startsebelum kesalahan hilang. Tidak yakin yang mana yang melakukannya.
Tembok Byron

28

Bagi Anda yang datang ke sini dengan basis kode campuran javascript dan skrip.

Anda mungkin perlu mendefinisikan opsi 'no-console' di jsRules, objek aturan jslints untuk file javascript, yaitu ada objek aturan terpisah untuk javascript dan skrip.

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

tetapi - apa tujuan dari hal ini?
roberto tomás

Dari jsRules, atau tanpa konsol?
Lee Brindley

no-console - tampaknya (saya mencarinya) bahwa itu ada di sana hanya untuk memperingatkan Anda bahwa pesan konsol tidak termasuk dalam kode produksi. Itu membuatnya menjadi aturan yang dipertanyakan kapan pun env Anda tidak
diproduksi

Saya mengerti maksud Anda, pada tingkat tertentu. Satu hal yang perlu dipertimbangkan adalah bahwa konsol bukan bagian dari bahasa javascript, biasanya diimplementasikan di mesin javascript, itu intinya - itu bukan bagian dari bahasa javascript, Anda membuat ketergantungan ke kode Anda yang mungkin atau mungkin tidak ada . Dengan demikian, saya dapat melihat kegunaan dari aturan ini.
Lee Brindley

@ robertotomás, Aturan ini didasarkan pada praktik terbaik untuk tidak memiliki pesan console.log dalam kode Anda. Kode produksi seharusnya tidak memiliki ini, jadi ini memberi tahu Anda belum siap produksi. Anda mungkin memiliki dua konfigurasi tslint, satu mengizinkan dan satu lagi tidak. Saya memiliki logger.infofungsi yang memanggil console.log(jadi pembungkus) yang memungkinkan saya dengan mudah mengaktifkan atau menonaktifkan logging untuk seluruh aplikasi. Saya tidak mengatakan ini adalah praktik terbaik, hanya sesuatu yang telah saya lakukan. Ini juga mempermudah integrasi dengan logger lain seperti github.com/krakenjs/beaver-logger .
PatS

8

Tambahkan yang berikut ini ke tslint.json

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

6

Ini adalah sintaks yang benar untuk menentukan aturan tanpa konsol (atau aturan lain dalam hal ini) tetapi hanya dengan peringatan daripada kesalahan (jelas mengubah opsi menjadi apa pun yang Anda inginkan)

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

Ini bekerja dengan sempurna sebagai peringatan. BTW, ini tidak didokumentasikan dalam dokumentasi tslint.
nelson6e65

1

dalam typeScript versi 3 perbarui tslint.json di bawah aturan kunci seperti di bawah ini:

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

dengan cara ini Anda hanya menentukan debug, time, timeEnd, jejak yang tidak akan digunakan, jika dalam tslint default Anda "info" ada dalam daftar, hapus saja.


1
Ini adalah cara yang harus dilakukan seperti yang dinyatakan dalam dokumen palantir.github.io/tslint/rules/no-console
Christopher Grigg

1

Cara saya menangani aturan "no-console" tslint adalah per file yang menurut saya nyaman dan terisolasi dalam fase pengembangan.

Segera setelah saya perlu menggunakan console.log () pertama; Kode Visual Studio menunjukkan opsi untuk menambahkan:

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

console.log ();

Jadi di sini saya hanya menghapus "-next-line" dan perintah ini akan mencakup seluruh file.

// tslint: nonaktifkan: no-console

console.log ();

Saya harap ini membantu sebagai alternatif untuk menonaktifkan fitur untuk seluruh aplikasi.

RON



0

jika // tslint:disable-next-line:no-consoletidak berhasil coba dengan// 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
    }
 }

masukkan deskripsi gambar di sini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.