Dan Ross
Dan Ross

Reputation: 3701

How to tell JSHint to ignore all undefined variables in one file?

In Karma tests, there are a lot of global variables and functions, which JSHint complains about (it is integrated into my editor).

How can I tell JSHint to ignore all undefined variables in this one specific file? I would expect /* jshint undef: false */ to turn off these warning, but it doesn't.

Upvotes: 37

Views: 22184

Answers (4)

Balasubramani M
Balasubramani M

Reputation: 8378

Just add this rule in your .jshintrc file.

"-W117": true

This will ignore all the warnings which say, '* is not defined.'

Upvotes: 9

ken
ken

Reputation: 9013

I've found myself using jshint ignore:line as a way of addressing this need:

var unusedVar; // jshint ignore:line

This allows jshint to continue its useful checking for this condition but where there are explicit reasons to ignore a specific declaration than adding this both addresses the issue and does it in a way that is immediately apparent to anyone looking at the code.

A good example (at least for me), is when using ES6's destructuring to illicit a set of shortcuts that you may or may not use all the time. In Ember, I often use many of the methods that hang off of it such as typeOf and computed. Rather than always referring to Ember.computed it's far nicer to just refer to computed and have something like the following at the top of all my Ember objects:

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

Upvotes: 8

zero_cool
zero_cool

Reputation: 4264

Ran into this problem using jshint this afternoon. This following fix worked for me. Instead of using "globals", try using "predef". For example:

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

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

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

Upvotes: 8

James Allardice
James Allardice

Reputation: 166021

The correct way to tell JSHint about globals is to use the globals directive. For example:

/*globals globalFunction, anotherGlobal, oneMore */

This will prevent "{a} is not defined" warnings when JSHint encounters any of the listed identifiers.

Alternatively, if you really want to ignore all "not defined" warnings in that file, and you're using JSHint 1.0.0 or above, you can simply turn off that specific warning:

/*jshint -W117 */

Upvotes: 73

Related Questions