web-dev-qa-db-fra.com

Comment dire à JSHint d'ignorer toutes les variables non définies dans un seul fichier?

Dans les tests Karma, il y a beaucoup de variables et de fonctions globales dont JSHint se plaint (il est intégré dans mon éditeur).

Comment puis-je dire à JSHint d'ignorer toutes les variables non définies dans ce fichier spécifique? Je m'attendrais à /* jshint undef: false */ pour désactiver ces avertissements, mais ce n'est pas le cas.

35
Dan Ross

La bonne façon de renseigner JSHint sur les globaux est d'utiliser la directive globals. Par exemple:

/*globals globalFunction, anotherGlobal, oneMore */

Cela empêchera les avertissements "{a} n'est pas défini" lorsque JSHint rencontre l'un des identificateurs répertoriés.

Alternativement, si vous voulez vraiment ignorer les avertissements tous "non définis" dans ce fichier et que vous utilisez JSHint 1.0.0 ou supérieur, vous pouvez simplement désactiver cet avertissement spécifique:

/*jshint -W117 */
69
James Allardice

Ajoutez simplement cette règle dans votre fichier .jshintrc.

"-W117": true

Cela ignorera tous les avertissements qui disent: "* n'est pas défini".

7
Balasubramani M

Ran dans ce problème en utilisant jshint cet après-midi. Cette correction suivante a fonctionné pour moi. Au lieu d'utiliser "globals", essayez d'utiliser "predef". Par exemple:

{
  /*
   * RELAXING OPTIONS
   * =================
   */

  // Suppress warnings about == null comparisons.
  "eqnull": true,

  "predef" : ["describe", "expect", "it", "inject", "beforeEach", "angular"]
}
7
zero_cool

Je me suis retrouvé à utiliser jshint ignore:line pour répondre à ce besoin:

var non utiliséVar; // jshint ignore: ligne

Cela permet à jshint de poursuivre sa vérification utile de cette condition, mais lorsqu'il existe des raisons explicites d'ignorer une déclaration spécifique, l'ajout de cela résout le problème et le fait d'une manière qui est immédiatement évidente pour quiconque regarde le code.

Un bon exemple (du moins pour moi) est l'utilisation de la déstructuration d'ES6 pour illiciter un ensemble de raccourcis que vous pouvez ou non utiliser tout le temps. Dans Ember, j'utilise souvent de nombreuses méthodes qui en dépendent, telles que typeOf et computed. Plutôt que de toujours faire référence à Ember.computed il est beaucoup plus agréable de se référer simplement à computed et d'avoir quelque chose comme ce qui suit en haut de tous mes Ember objets:

 const { computed, $, A, run, on, typeOf, debug, get, set } = Ember;    // jshint ignore:line
6
ken