Das Deaktivieren der Warnung 'define' wird nicht mit JSHint und RequireJS definiert

108

Ich verwende RequireJS AMD in meinem Projekt. Wenn ich jshint auf meinem Projekt ausführe, wirft es Fehler wie

In AMD-Skripten

 'define' is not defined.

In Mokka-Testfällen

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

Wie entferne ich diese Warnung in jshint?

Fizer Khan
quelle

Antworten:

187

Um ein bisschen zu erweitern, hier ein .jshintrcSetup für Mocha:

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

Aus den JSHint-Dokumenten bedeutet "false" (Standardeinstellung), dass die Variable schreibgeschützt ist.

Wenn Sie Globals nur für eine bestimmte Datei definieren, können Sie Folgendes tun:

/*global describe, it, before, beforeEach, after, afterEach */
Bendytree
quelle
41
wir können {"mocha": true} 2.5.1+ verwenden github.com/jshint/jshint/issues/1330
gwokae
@ Bendytree Weißt du, ob ich diese Regeln für einige Dateien / Ordner hinzufügen kann, die nicht global sind?
Gobliins
@ Gobliins Bohdans Kommentar oben. Fügen Sie diese Zeile als erste Zeile Ihrer Mokka-Testdatei hinzu und es wird nur die Regel für diese Datei durchgesetzt
Isaac
15
jshint: {
  options: {
    mocha: true,
  }
}

ist was du willst

Grant Fong
quelle
12

Um die nicht definierte Warnung in jshint für das Javascript zu vermeiden, fügen Sie Kommentare hinzu wie:

/*global describe:true*/

Optionen

Roland Puntaier
quelle
8

Fügen Sie dies in Ihre .jshintrc ein

"predef" : ["define"]   // Custom globals for requirejs
Shital Shah
quelle
Ich bin mir nicht sicher, warum jemand dies abgelehnt hat. Ich verwende dies genau in meinen Projekten und bin sauberer als andere Antworten und funktioniert.
Shital Shah
19
Predef ist veraltet, verwenden Sie Globals
Jonathan Azulay
@ JonathanAzulay Ich habe unter jshint.com/docs/options/#predef keinen Verfallshinweis gefunden . Ich denke, Global kann für benutzerdefiniertes globales JavaScript verwendet werden, z. B. Angular, $, jQuery usw., und Predef kann für implizite globale Objekte wie Fenster, Dokument, Konsole usw. verwendet werden
Amitesh
6

zu spät zur Party, aber verwenden Sie diese Option in Ihrem jshintrc:

"dojo": true

und du sollst friedlich ruhen ohne rote Warnungen ...

Gilad Peleg
quelle
6

Wenn Sie an Knoten js arbeiten. Fügen Sie diese beiden Zeilen am Anfang Ihrer Datei hinzu

/*jslint node: true */
"use strict";
salihcenap
quelle
Diese Frage bezieht sich auf JSHint .
PointedEars
1

Wenn Sie versuchen, JSHint in WebStorm mit Mocha auszuführen, gehen Sie wie folgt vor:

WebStorm> Einstellungen> Sprachen und Frameworks> JavaScript> Tools für die Codequalität> JSHint

Scrollen Sie nach unten zu "Umgebungen" und stellen Sie sicher, dass Sie das Kontrollkästchen aktiviert haben, um "Mokka" zu aktivieren, mit dem die Definitionen für JSHint für Mokka für Sie eingerichtet werden.

Nyarasha
quelle