Sposób wyłączenia ostrzeżenia „define” nie jest zdefiniowany za pomocą JSHint i RequireJS

108

W moim projekcie używam RequireJS AMD. Kiedy uruchamiam jshint w moim projekcie, wyświetla błąd, taki jak

W skryptach AMD

 'define' is not defined.

W przypadkach testowych Mocha

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

Jak usunąć to ostrzeżenie w jshint?

Fizer Khan
źródło

Odpowiedzi:

187

Aby trochę rozwinąć, oto .jshintrckonfiguracja dla Mocha:

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

Z dokumentacji JSHint - wartość false (wartość domyślna) oznacza, że ​​zmienna jest tylko do odczytu.

Jeśli definiujesz globalne tylko dla określonego pliku, możesz to zrobić:

/*global describe, it, before, beforeEach, after, afterEach */
bendytree
źródło
41
możemy użyć {"mocha": true} 2.5.1+ github.com/jshint/jshint/issues/1330
gwokae
@bendytree Czy wiesz, czy mogę dodać te reguły do ​​niektórych plików / folderów, które nie są globalne?
Gobliins
Komentarz @Gobliins Bohdan powyżej. Dodaj tę linię jako pierwszą linię pliku testowego mokka, a wymusi to regułę tylko dla tego pliku
Izaak
15
jshint: {
  options: {
    mocha: true,
  }
}

jest tym, czego chcesz

Grant Fong
źródło
12

Aby uniknąć niezdefiniowanego ostrzeżenia w jshint dla javascript, dodaj komentarze takie jak:

/*global describe:true*/

Opcje

Roland Puntaier
źródło
8

Dodaj to do swojego .jshintrc

"predef" : ["define"]   // Custom globals for requirejs
Shital Shah
źródło
Nie wiem, dlaczego ktoś to zlekceważył. Używam tego dokładnie w moich projektach i jest czystszy niż inne odpowiedzi i działa.
Shital Shah,
19
predef jest przestarzały, użyj globali
Jonathan Azulay
@JonathanAzulay Nie znalazłem żadnej notatki o wycofaniu na jshint.com/docs/options/#predef . Myślę, że Global może być używany do niestandardowego Global JavaScript, np. Angular, $, jQuery itp., A predef może być używany do niejawnych obiektów globalnych, takich jak okno, dokument, konsola itp.
Amitesh
6

spóźniłeś się na imprezę, ale użyj tej opcji w jshintrc:

"dojo": true

i będziesz spoczywał spokojnie bez czerwonych ostrzeżeń ...

Gilad Peleg
źródło
6

Jeśli pracujesz na node js. Dodaj te dwie linie na początku pliku

/*jslint node: true */
"use strict";
salihcenap
źródło
To pytanie dotyczy JSHint .
PointedEars
1

Jeśli próbujesz uruchomić JSHint w WebStorm z Mocha, tak jak ja, przejdź do:

WebStorm> Preferencje> Języki i struktury> JavaScript> Narzędzia jakości kodu> JSHint

Przewiń w dół do „Środowiska” i upewnij się, że zaznaczyłeś pole wyboru, aby włączyć opcję „Mocha”, co spowoduje skonfigurowanie definicji JSHint for Mocha.

nyarasha
źródło