Игнорировать переменную camelcase в JSHint

имея немного проблемы с JShint и следующей строкой кода.

$location.path('map-' + map.id + '/venue-' + map.attributes.default_venue.value);

Я получаю ошибку,Identifier 'default_venue' is not in camel case. обычно это не проблема, но у меня нет никакого контроля над именем переменной - он вводится через JSON API.

есть ли способ подавить эту проблему для затронутых переменных или для строк, в которых они появляются?

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

5 ответов


JSHint подчиняется директивам на уровне функции, поэтому вы можете найти заключительную функцию и добавить к нему. Вот пример:

/*jshint camelcase: true */

var not_camel_case = 1; // Warns

function example() {
  /*jshint camelcase: false */
  var not_camel_case = 2; // Does not warn
}

по словам JSHint Docs, вы можете сделать конфигурационный файл в том же каталоге под названием .jshintrc, или любой каталог до самого корневого каталога. Я просто установил свой, используя это:

  {
    "camelcase": false
  }

здесь есть множество других опций:http://jshint.com/docs/options/#camelcase


я помещаю имя свойства, поступающего из api, в отдельную строку. Например:

var defaultVenueAttributeKey = 'default_venue';
$location.path('map-' + map.id + '/venue-' + map.attributes[defaultVenueAttributeKey].value);

это немного более подробно, но вы можете сгруппировать все имена свойств, поступающие из вашего API вместе, а затем это упрощает ответ на изменение API.


принятый ответ /*jshint camelcase: true */ не работает для меня. Я все еще получаю ошибки.

Я смотрю на docs и нашел это решение, которое сработало для меня:

/*eslint camelcase: ["error", {properties: "never"}]*/

попробуйте что-то вроде этого.. Хотя это и нечестиво, но сработает.

var foo;
$.each( jsonArray, function ( i, value ) {
    if ( i === 'array_element' ) {
        foo = value;
    }
});