Comment désactiver l'avertissement 'define' n'est pas défini à l'aide de JSHint et RequireJS

108

J'utilise RequireJS AMD dans mon projet. Lorsque j'exécute jshint sur mon projet, cela génère une erreur comme

Dans les scripts AMD

 'define' is not defined.

Dans les cas de test Mocha

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

Comment supprimer cet avertissement dans jshint?

Fizer Khan
la source

Réponses:

187

Juste pour développer un peu, voici une .jshintrcconfiguration pour Mocha:

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

À partir des documents JSHint - la valeur false (par défaut) signifie que la variable est en lecture seule.

Si vous définissez des globaux uniquement pour un fichier spécifique, vous pouvez le faire:

/*global describe, it, before, beforeEach, after, afterEach */
bendytree
la source
41
nous pouvons utiliser {"mocha": true} 2.5.1+ github.com/jshint/jshint/issues/1330
gwokae
@bendytree savez-vous si je peux ajouter ces règles pour certains fichiers / dossiers non globaux?
Gobliins
Commentaire de @Gobliins Bohdan ci-dessus. Ajoutez cette ligne comme première ligne de votre fichier de test mocha et elle appliquera la règle pour ce fichier uniquement
Isaac
15
jshint: {
  options: {
    mocha: true,
  }
}

c'est ce que tu veux

Grant Fong
la source
12

Pour éviter l'avertissement non défini dans jshint pour le javascript, ajoutez des commentaires comme:

/*global describe:true*/

Options

Roland Puntaier
la source
8

Ajoutez ceci dans votre .jshintrc

"predef" : ["define"]   // Custom globals for requirejs
Shital Shah
la source
Je ne sais pas pourquoi quelqu'un a voté contre cela. J'utilise cela exactement dans mes projets et est plus propre que d'autres réponses et fonctionne.
Shital Shah
19
predef est obsolète, utilisez les globals
Jonathan Azulay
@JonathanAzulay Je n'ai trouvé aucune note d' obsolescence sur jshint.com/docs/options/#predef . Je pense que Global peut être utilisé pour le JavaScript global personnalisé, par exemple angular, $, jQuery, etc. et predef peut être utilisé pour des objets globaux implicites tels que fenêtre, document, console, etc.
Amitesh
6

en retard à la fête, mais utilisez cette option dans votre jshintrc:

"dojo": true

et tu te reposeras paisiblement sans avertissements rouges ...

Gilad Peleg
la source
6

Si vous travaillez sur le nœud js. Ajoutez ces deux lignes au début de votre fichier

/*jslint node: true */
"use strict";
salihcenap
la source
Cette question concerne JSHint .
PointedEars
1

Si vous essayez d'exécuter JSHint dans WebStorm avec Mocha, comme je le suis, allez dans:

WebStorm> Préférences> Langages et cadres> JavaScript> Outils de qualité du code> JSHint

Faites défiler jusqu'à "Environnements" et assurez-vous que vous avez coché la case pour activer "Mocha" qui configurera les définitions de JSHint pour Mocha pour vous.

nyarasha
la source