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.

PatS
sumber

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

alveomaster.dll
sumber
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

Domiserver
sumber
0

Menurut dokumen: https://eslint.org/docs/user-guide/getting-started#configuration

  • "off" atau 0 - matikan aturan
  • "warnai" atau 1 - aktifkan aturan sebagai peringatan (tidak memengaruhi kode keluar)
  • "error" atau 2 - aktifkan aturan sebagai error (kode keluar adalah 1)

Omong-omong, penyiapan Anda yang benar adalah

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

jika // tslint:disable-next-line:no-consoletidak berhasil coba dengan// eslint:disable-next-line:no-console

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

Rashid Iqbal
sumber