2013-06-28 5 views
31

В тестах Karma существует множество глобальных переменных и функций, о которых жалуется JSHint (она интегрирована в мой редактор).Как сообщить JSHint игнорировать все неопределенные переменные в одном файле?

Как я могу сообщить JSHint игнорировать все неопределенные переменные в этом конкретном файле? Я ожидал бы /* jshint undef: false */, чтобы отключить это предупреждение, но это не так.

ответ

63

Правильный способ рассказать JSHint о глобальном значении использовать директиву globals. Например:

/*globals globalFunction, anotherGlobal, oneMore */ 

Это предотвратит «{а} не определен» предупреждений, когда JSHint встречает какой-либо из перечисленных идентификаторов.

В качестве альтернативы, если вы действительно хотите, чтобы игнорировать все «не определен» предупреждений в этом файле, и вы используете JSHint 1.0.0 или выше, вы можете просто отключить, что конкретное предупреждение:

/*jshint -W117 */ 
+0

Спасибо, но где вы узнали об этом? В [docs] (http://www.jshint.com/docs/) не упоминаются аргументы командной строки, а 'jshint --help' ожидает, что я узнаю имя arg, в котором мне нужна помощь. –

+2

@ DanRoss - Думаю, я узнал об этом, читая источник. Я много сделал в источнике JSHint, создавая http://jslinterrors.com, который может вам пригодиться. –

7

Попытайтесь решить эту проблему, используя jshint сегодня днем. Это исправление работало для меня. Вместо того, чтобы использовать «globals», попробуйте использовать «predef». Например:

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

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

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

Я нашел себя, используя jshint ignore:line как способ удовлетворения этой потребности:

уаг unusedVar; // jshint игнорировать: линию

Это позволяет jshint продолжать его полезно проверить для этого условия, но где есть явные причины игнорировать конкретное заявление, чем добавление это как решает проблему, и делает это таким образом, что это немедленно очевидно для любого, кто смотрит на код.

Хорошим примером (по крайней мере для меня) является использование деструкции ES6 для незаконного набора ярлыков, которые вы можете или не можете использовать все время. В Ember я часто использую многие из методов, которые от него зависают, например typeOf и computed. Вместо того, чтобы всегда ссылаясь на Ember.computed это гораздо лучше просто обратиться к computed и иметь что-то вроде следующего в верхней части всех моих объектов Поста:

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

Просто добавьте это правило в файле .jshintrc.

"-W117": true 

Это игнорирует все предупреждения, которые говорят: «* не определено».

+1

Но тогда у вас есть проблемы с переменными, которые следует определить, но вы сделали синтаксическую ошибку. Я бы не отключил это предупреждение. –

+0

Лучше делать то, что предлагает @JamesAllardice, и просто поместить его в файл, где он вызывает проблемы. – dgo