Mengapa JSHint memberikan peringatan jika saya menggunakan const?

316

Ini adalah kesalahan yang saya dapatkan ketika menggunakan const:

<error line="2" column="1" severity="warning" message="&apos;const&apos; is available in ES6 (use esnext option) or Mozilla JS extensions (use moz)." source="jshint.W104" />

Kode saya terlihat seperti ini:

const Suites = {
    Spade: 1,
    Heart: 2,
    Diamond: 3,
    Club: 4
};

Kode berfungsi dengan baik hanya JSHint yang memperingatkan saya setiap saat.

Andre Schlesinger
sumber
Saya tidak melihat pertanyaan dalam teks, tapi mungkin Anda sudah menjawab itu: "use esnext option". Dan mengapa? Bukankah pesan kesalahan itu cukup jelas? constbukan JS standar (belum).
Teemu
5
atau gunakan eslint sebagai ganti jshint
Rakka Rage

Jawaban:

558

Ketika mengandalkan fitur ECMAScript 6 seperti const, Anda harus mengatur opsi ini sehingga JSHint tidak memunculkan peringatan yang tidak perlu.

/ * jshint esnext: true * / ( Edit 2015.12.29 : sintaks yang diperbarui untuk mencerminkan komentar @ Olga )

/*jshint esversion: 6 */

const Suites = {
    Spade: 1,
    Heart: 2,
    Diamond: 3,
    Club: 4
};

Opsi ini, seperti namanya, memberi tahu JSHint bahwa kode Anda menggunakan sintaksis spesifik ECMAScript 6. http://jshint.com/docs/options/#esversion

Sunting 2017.06.11 : menambahkan opsi lain berdasarkan jawaban ini .

Sementara konfigurasi sebaris berfungsi dengan baik untuk file individual, Anda juga dapat mengaktifkan pengaturan ini untuk seluruh proyek dengan membuat .jshintrcfile di root proyek Anda dan menambahkannya di sana.

{
  "esversion": 6
}
James Hibbard
sumber
1
ini bekerja ... tentu lebih suka itu menjadi parm baris perintah! ... hint hint jshint folk
Scott Stensland
9
Dokumentasi sekarang mengatakan Warning This option has been deprecated and will be removed in the next major release of JSHint. Use esversion: 6 instead.Meskipun plugin bawaan Webstorm saya tidak mengenali opsi baru. Saya akhirnya menentukan keduanya.
Olga
5
Bagi saya ini .jshintrc bukan .jshint, tidak yakin apakah ada perbedaan dalam versi
jshint
Ups. Kamu benar. Dikoreksi.
James Hibbard
1
Kemudian restart Atom Anda, jika itu masalahnya
Vitor Braga
280

Anda dapat menambahkan file bernama .jshintrc di root aplikasi Anda dengan konten berikut untuk menerapkan pengaturan ini untuk seluruh solusi :

{
    "esversion": 6
}

Jawaban James menunjukkan bahwa Anda dapat menambahkan komentar /*jshint esversion: 6 */untuk setiap file, tetapi itu lebih berfungsi daripada yang diperlukan jika Anda perlu mengontrol banyak file.

Zanon
sumber
1
Apakah ada konfigurasi untuk menggunakan ini? Jshint saya hanya mengabaikan apa yang ada di dalamnya .jshintrc.
Ethan Yang
1
@EthanYang, Tidak. Tidak ada konfigurasi tambahan. Pastikan saja bahwa file tersebut dapat ditemukan oleh JSHint. Dari dokumen:JSHint will start looking for this file in the same directory as the file that's being linted. If not found, it will move one level up the directory tree all the way up to the filesystem root. (Note that if the input comes from stdin, JSHint doesn't attempt to find a configuration file)
Zanon
60

Saya mendapat peringatan yang sama saat menggunakan pernyataan ekspor. Saya menggunakan VS Code dan menggunakan pendekatan yang mirip dengan solusi Wenlong Jiang.

  1. Pengaturan pengguna

  2. Konfigurasi JSHint

  3. "jshint.options": {} (Edit)

  4. Gunakan tanda kutip ganda saat menentukan"esversion"

    Atau salin cuplikan ini ke Pengaturan Pengguna:

    "jshint.options": {
      "esversion": 6,
    }

Membuat .jshintrcfile tidak diperlukan jika Anda ingin mengonfigurasi pengaturan jshint global untuk editor Anda

Nicholas Gentile
sumber
8
Terima kasih. Jelas jawaban terbaik di sini untuk mereka yang menggunakan kode studio visual. Untuk ref, Pengaturan Pengguna via (Mac :) "Code"> Preferensi> Pengaturan.
CopyJosh
1
Terima kasih atas solusi tambahan ini. ini sangat membantu.
dprogramz
42

Jika Anda menggunakan VSCode:

1.

  • Buka preferensi -> pengaturan ( cmd + ,)
  • Ketikkan jshint.optionske dalam bilah pencarian
  • Arahkan kursor ke atasnya dan klik ikon pensil
  • Sekarang ditambahkan di sisi kanan.
  • Tambahkan "esversion": 6ke objek opsi.

2.

Atau cukup tambahkan ini ke pengaturan pengguna Anda:

"jshint.options": {
    "esversion": 6
}

[UPDATE] pengaturan vscode baru

  • Buka preferensi -> pengaturan ( cmd + ,)
  • ketik jshintke dalam pencarian

Pengaturan VSCode

  • lanjutkan dengan langkah 2.
Phil
sumber
33

Saya menghabiskan waktu lama untuk memperbaiki ini. Setiap solusi berbicara tentang 'opsi pengaturan'. Saya tidak tahu apa artinya itu. Akhirnya, saya menemukan jawabannya. Anda bisa memasukkan baris komentar di bagian atas file /*jshint esversion: 6 */.

Larutan

Josh Pittman
sumber
24
Satu-satunya masalah dengan melakukannya dengan cara ini, seperti yang saya ketahui, adalah Anda harus menambahkan komentar di bagian atas setiap file yang Anda gunakan. Solusi yang lebih baik adalah dengan membuat file baru di folder root aplikasi Anda bernama .jshintrcdan kemudian menambahkan kode berikut ke file{ "esnext": true }
Josh Pittman
17
{ "esnext": true }sekarang sudah ditinggalkan . Anda sekarang harus menggunakan { "esversion": 6 }gantinya.
cybersam
3
Saya harus menggunakan versi JSHint yang kedaluwarsa, karena hanya dengan menggunakan "esnext": truesaya dapat menyelesaikan ini. "esversion": 6tidak berpengaruh.
Joncom
4
Kemudian tingkatkan JShint 😉 Anda
Cyril Duchon-Doris
18

Anda dapat menentukan esversion: 6 di dalam objek opsi jshint. Silakan lihat gambar. Saya menggunakan plugin grunt-contrib-jshint.

masukkan deskripsi gambar di sini

Wenlong Jiang
sumber
2
Ini bekerja untuk mereka yang menggunakan Grunt. Tambahkan ini ke gruntfile.js
JoeTidee
1
Terima kasih, bekerja seperti pesona bagi saya. Tidak perlu mengabaikan file (s) dan implementasi individual dari penyelewengan di halaman eksklusif
sg28
3

Ketika Anda mulai menggunakan ECMAScript 6 kesalahan ini dilemparkan oleh IDE Anda.

Ada dua opsi yang tersedia:

jika Anda hanya memiliki satu file dan ingin menggunakan es6 maka cukup tambahkan baris di bawah ini di bagian atas file.

/*jshint esversion: 6 */

Atau jika Anda memiliki jumlah file js atau Anda menggunakan kerangka kerja apa pun (seperti simpuljs express), Anda dapat membuat file baru bernama .jshintrcdalam direktori root Anda dan menambahkan kode di bawah ini dalam file:

{
    "esversion": 6
}

Jika Anda ingin menggunakan versi es6 dan seterusnya untuk setiap proyek, Anda dapat mengonfigurasi IDE Anda.

Prashant Barve
sumber
2

Di package.json Anda, Anda dapat memberitahu Jshint untuk menggunakan es6 seperti ini

"jshintConfig":{
    "esversion": 6 
}
Singhak
sumber
Jawaban diterima pada bulan April 2020 untuk Visual Studio Code
ArifMustafa
1

Jika Anda menggunakan Webstorm dan jika Anda tidak memiliki file konfigurasi Anda sendiri, maka cukup aktifkan EcmaScript.nextopsi Santai di dalam

Pengaturan | Bahasa & Kerangka | JavaScript | Alat Kualitas Kode | JSHint

Lihat pertanyaan ini Bagaimana-lakukan-saya-mengatasi-ini-JSHint-ES6-kesalahan

Sudhanshu Gaur
sumber
1

Jika Anda menggunakan konfigurasi Grunt, Anda perlu melakukan langkah-langkah berikut

Pesan peringatan di Jshint:

masukkan deskripsi gambar di sini

Larutan:

  1. Atur opsi jshint dan petakan file .jshintrc.js

masukkan deskripsi gambar di sini

  1. Buat file .jshintrc.js dalam file itu tambahkan kode berikut
{  
  "esversion": 6  
} 

Setelah mengkonfigurasi ini, Jalankan lagi Ini akan melewati peringatan,

masukkan deskripsi gambar di sini

Sridhar
sumber
0

Buat file bernama, katakan jshint_opts dengan konten ini: {"esversion": 6}

Kemudian panggil jshint dengan sesuatu seperti baris perintah ini:

jshint --config jshint_opts lib / *. js

Alan Wendt
sumber
0

Untuk SublimeText 3 di Mac:

  1. Buat file .jshintrc di direktori root Anda (atau di mana pun Anda inginkan) dan tentukan esversion:
    # .jshintrc
    {
      "esversion": 6
    }
  1. Referensi pwd file yang baru saja Anda buat di pengaturan pengguna SublimeLinter (Teks Sublime> Preferensi> Pengaturan Paket> SublimeLinter> Pengaturan)
    // SublimeLinter Settings - User
    {
      "linters": {
        "jshint": {
          "args": ["--config", "/Users/[your_username]/.jshintrc"]
        }
      }
    }
  1. Keluar dan aktifkan kembali SublimeText
laptite
sumber
0

Mei 2020 Ini adalah solusi sederhana yang saya temukan dan itu akan menyelesaikan semua proyek saya, di windows jika proyek Anda berada di suatu tempat di dalam direktori c:, buat file baru .jshintrc dan simpan di direktori C buka file .jshintrc ini dan tulis { "esversion": 6}dan itu Itu. peringatan harus pergi, sama akan bekerja di direktori d

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini ya Anda juga dapat mengaktifkan pengaturan ini untuk proyek tertentu hanya dengan membuat file .jshintrc di root proyek Anda dan menambahkan { "esversion": 6}

kunal rajput
sumber
0

Buat .jshintrcfile di direktori root dan tambahkan set di sana versi js terbaru: "esversion": 9dan versi asi: "asi": true(ini akan membantu Anda menghindari penggunaan titik koma)

{
    "esversion": 9,
    "asi": true
}
JohnPix
sumber
0

Untuk memperbaiki ini di Dreamweaver CC 2018, saya pergi ke preferensi, mengedit set aturan - pilih JS, edit / terapkan perubahan, temukan "esnext" dan ubah pengaturan semu menjadi true. Itu bekerja untuk saya setelah jam penelitian. Semoga ini bisa membantu orang lain.

pengguna13758676
sumber
-1

Jika menggunakan Sublime Text 3:

  • Pergi ke Preferensi -> Pengaturan
  • Di bawah Preferences.sublime-settings — Pengguna menambahkan "esversion": 6
London804
sumber
-2

Dalam versi baru Dreamweaver untuk menyelesaikan kesalahan ini

  • Pergi ke Edit-> Preference-> Linting
  • Dan aturan Edit masuk ke js ditetapkan dan dilewati

    "jshintConfig": {"esversion": 6}

Muhammad Umar Arslan Muhammad
sumber