Angular-styleguide: jshint имеет проблемы с .catch

Созданный на 31 янв. 2015  ·  10Комментарии  ·  Источник: johnpapa/angular-styleguide

Я очень ценю мысли и усилия, вложенные в это руководство по стилю.

У меня возникают проблемы с использованием jshint и некоторых примеров, используемых в руководстве. Например:

function getCategories() {

      return $http.get(env + 'api/feeds/', {cache: true})
        .then(getCategoriesComplete)
        .catch(getCategoriesFailed);

      function getCategoriesComplete(response) {
        return response;
      }

      function getCategoriesFailed(error) {
        console.log(error.data);
      }

    }

Когда мой процесс ворчания запускает jshint, я получаю:
screen shot 2015-01-30 at 9 54 51 pm

Простой обходной путь - использовать скобки (ew) для catch , но я лично считаю это сомнительным. Я попытался предоставить рекомендуемые настройки .jshintrc , но безуспешно. Это могло бы потребовать небольшого пояснения, но это также могло быть ошибкой пользователя с моей стороны.

Спасибо!

help wanted

Самый полезный комментарий

Странный. Я не понимаю этого. Старая версия jshint?

Вы можете посмотреть здесь: http://jslinterrors.com/expected-an-identifier-and-instead-saw-aa-reserved-word/

Он предлагает директивы /*jshint es5: true */ или /*jshint -W024 */ .

Но, как и Джон, мне никогда не приходилось делать ничего особенного.

Все 10 Комментарий

Я этого не вижу ... вы проверяли это на соответствие правилам jshintrc, которые я предоставил в своих репозиториях?

Я попытался использовать настройки JSHint, представленные в разделе JSHint , которые выглядят так же, как в проекте ng-demos / modular, но я все равно получал ту же ошибку. Если это тот же параметр, который вы используете, я не уверен, почему я получаю эту ошибку, а вы - нет.

Посмотрев немного ближе в Options JSHint , то ES5 Настройка набора в true фиксированной это для меня.

Из Документов:

This option enables syntax first defined in the ECMAScript 5.1 specification. This includes 
allowing reserved keywords as object properties.

Если вы считаете, что это добавляет ценности, я могу отправить PR, но я немного сомневаюсь, так как вы не испытываете такого же поведения. В этом руководстве по стилю так много замечательных идей. Я извлек из этого массу пользы. Так что спасибо за то, что сделали это достоянием общественности. Очень признателен.

Да, это странно ... Я не рассматривал это глубоко, но у меня не возникает никаких проблем, когда я копирую ваш точный код в свой редактор, и я вообще не устанавливаю настройку es5. Давайте пока оставим это открытым и посмотрим, поймут ли это другие.

закрытие из-за того, что никто не видел этого

Я только что столкнулся с той же проблемой.


Мой код:

function (credentials) {
    return DataService.login(credentials)
      .then(loginSuccess)
      .catch(loginError);

    function loginSuccess(response) {}
    function loginError(response) {}
}

Моя grunt конфигурация:

    jshint: {
      src: [ 
        '<%= app_files.js %>'
      ],
      options: {
        curly: true,
        immed: true,
        newcap: true,
        noarg: true,
        sub: true,
        boss: true,
        eqnull: true,
        debug: true
      },
      globals: {}
    },

Версия плагина jshint :

{
  "name": "grunt-contrib-jshint",
  "version": "0.4.3",
...
}

Вы пропустили «используйте строгое»; ?

@wardbell нет, 'use strict;' не пропало.

Странный. Я не понимаю этого. Старая версия jshint?

Вы можете посмотреть здесь: http://jslinterrors.com/expected-an-identifier-and-instead-saw-aa-reserved-word/

Он предлагает директивы /*jshint es5: true */ или /*jshint -W024 */ .

Но, как и Джон, мне никогда не приходилось делать ничего особенного.

Установка es5: true решила мою проблему. Бесконечно благодарен!
По поводу версий. Я использую grunt-contrib-jshint 0.4.3 , который использует jshint 1.1.0 .

@johnpapa Я знаю, что это закрытая проблема, но я заметил, что в пакете ASP.NET MVC также есть проблемы, когда _.catch_ выдает ошибку и фактически не указывает на код.

Как выглядит получившаяся связка:

/* Minification failed. Returning unminified contents.
(514,18-23): run-time error JS1137: 'catch' is a new reserved word and should not be used as an identifier: catch
...
 */
(all the code here without being minified)

Возможное решение - изменить стили Y035 и Y060, чтобы использовать обычные обещания, описанные в официальных документах AngularJS:

$http(req).success(function(){...}).error(function(){...});
Была ли эта страница полезной?
0 / 5 - 0 рейтинги