Cara menonaktifkan peringatan 'define' tidak ditentukan menggunakan JSHint dan RequireJS

108

Saya menggunakan RequireJS AMD dalam proyek saya. Ketika saya menjalankan jshint pada proyek saya, itu memunculkan kesalahan seperti

Di AMD Scripts

 'define' is not defined.

Dalam kasus uji Mocha

 'describe' is not defined.
 'it' is not defined.

Bagaimana cara menghapus peringatan ini di jshint?

Fizer Khan
sumber

Jawaban:

187

Hanya untuk memperluas sedikit, inilah .jshintrcpengaturan untuk Mocha:

{
  ....
  "globals"   : {
    /* MOCHA */
    "describe"   : false,
    "it"         : false,
    "before"     : false,
    "beforeEach" : false,
    "after"      : false,
    "afterEach"  : false
  }
}

Dari Dokumen JSHint - false (default) berarti variabel hanya-baca.

Jika Anda menentukan global hanya untuk file tertentu, Anda dapat melakukan ini:

/*global describe, it, before, beforeEach, after, afterEach */
bendytree.dll
sumber
41
kita dapat menggunakan {"mocha": true} 2.5.1+ github.com/jshint/jshint/issues/1330
gwokae
@bendytree, tahukah Anda jika saya dapat menambahkan aturan ini untuk beberapa file / folder yang tidak global?
Gobliins
Komentar @Gobliins Bohdan di atas. Tambahkan baris itu sebagai baris pertama dari file uji mocha Anda dan itu akan memberlakukan aturan hanya untuk file itu
Isaac
15
jshint: {
  options: {
    mocha: true,
  }
}

adalah apa yang kamu inginkan

Grant Fong
sumber
12

Untuk menghindari peringatan yang tidak ditentukan di jshint untuk javascript tambahkan komentar seperti:

/*global describe:true*/

Pilihan

Roland Puntaier
sumber
8

Tambahkan ini di .jshintrc Anda

"predef" : ["define"]   // Custom globals for requirejs
Shital Shah
sumber
Tidak yakin mengapa seseorang tidak menyukai ini. Saya menggunakan ini persis dalam proyek saya dan lebih bersih daripada jawaban dan karya lain.
Shital Shah
19
predef tidak digunakan lagi, gunakan global
Jonathan Azulay
@JonathanAzulay Saya tidak menemukan catatan penghentian di jshint.com/docs/options/#predef . Saya pikir Global dapat digunakan untuk JavaScript Global kustom misalnya angular, $, jQuery dll dan predef dapat digunakan untuk objek global implisit seperti jendela, dokumen, konsol dll
Amitesh
6

terlambat ke pesta, tetapi gunakan opsi ini di jshintrc:

"dojo": true

dan engkau akan beristirahat dengan damai tanpa peringatan merah ...

Gilad Peleg
sumber
6

Jika Anda mengerjakan node js. Tambahkan dua baris ini di awal file Anda

/*jslint node: true */
"use strict";
salihcenap
sumber
Pertanyaan ini tentang JSHint .
PointedEars
3

Baca dokumen dan telusuri/*global

Paul Grime
sumber
Dari contoh JSHint GitHub :"unused" : true, // true: Require all defined variables be used
Laoujin
4
Itu tidak sama.
Paul Grime
1

Jika Anda mencoba menjalankan JSHint di WebStorm dengan Mocha, seperti saya, masuk ke:

WebStorm> Preferensi> Bahasa & Kerangka> JavaScript> Alat Kualitas Kode> JSHint

Gulir ke bawah ke "Lingkungan" dan pastikan Anda telah memilih kotak centang untuk mengaktifkan "Mocha" yang akan menyiapkan definisi untuk JSHint untuk Mocha untuk Anda.

nyarasha
sumber