Angular-styleguide: jshint a des problèmes avec .catch

Créé le 31 janv. 2015  ·  10Commentaires  ·  Source: johnpapa/angular-styleguide

J'apprécie vraiment la réflexion et les efforts qui ont été consacrés à ce guide de style.

Je rencontre des problèmes avec jshint et certains des exemples utilisés dans le guide. Par exemple:

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);
      }

    }

Lorsque mon processus grunt exécute jshint, j'obtiens :
screen shot 2015-01-30 at 9 54 51 pm

Une solution de contournement simple consiste à utiliser la notation entre crochets (ew) pour catch , mais personnellement, je trouve cela peu recommandable. J'ai essayé de fournir les paramètres .jshintrc recommandés mais sans succès. Cela pourrait nécessiter une petite clarification, mais cela pourrait également être une erreur de l'utilisateur de ma part.

Merci!

help wanted

Commentaire le plus utile

Bizarre. Je ne comprends pas. Ancienne version de jshint ?

Vous pouvez regarder ici : http://jslinterrors.com/expected-an-identifier-and-instead-saw-aa-reserved-word/

Il suggère les directives /*jshint es5: true */ ou /*jshint -W024 */ .

Mais comme John, je n'ai jamais eu à faire quoi que ce soit de spécial.

Tous les 10 commentaires

je ne vois pas cela ... l'avez-vous vérifié par rapport aux règles jshintrc que j'ai fournies dans mes dépôts?

J'ai essayé d'utiliser les paramètres JSHint fournis dans la section JSHint , qui semblent être les mêmes dans le projet ng-demos/modular, mais j'ai toujours eu la même erreur. Si ce sont les mêmes paramètres que vous utilisez, je ne sais pas pourquoi j'obtiens cette erreur et vous ne l'êtes pas.

Après avoir regardé de plus près les options JSHint , le paramètre es5 défini sur true corrigé pour moi.

De la doc :

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

Si vous pensez que c'est quelque chose qui ajoute de la valeur, je peux soumettre un PR, mais j'hésite un peu car vous ne rencontrez pas le même comportement. Il y a tellement de bonnes idées dans ce guide de style. J'en ai profité énormément. Alors merci d'avoir rendu cela public. Très appréciée.

Oui, c'est étrange... Je ne l'ai pas examiné en profondeur, mais je n'ai aucun problème lorsque je copie votre code exact dans mon éditeur et que je ne définis pas du tout le paramètre es5. Gardons cela ouvert pour l'instant et voyons si d'autres l'obtiennent

fermeture car aucune autre personne ne voit cela

Je viens de rencontrer le même problème.


Mon code :

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

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

Ma configuration grunt :

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

Version du plugin jshint :

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

Manquez-vous « use strict ; » ?

@wardbell non, 'use strict;' ne manque pas.

Bizarre. Je ne comprends pas. Ancienne version de jshint ?

Vous pouvez regarder ici : http://jslinterrors.com/expected-an-identifier-and-instead-saw-aa-reserved-word/

Il suggère les directives /*jshint es5: true */ ou /*jshint -W024 */ .

Mais comme John, je n'ai jamais eu à faire quoi que ce soit de spécial.

Le réglage es5: true résolu mon problème. Mille mercis!
Concernant les versions. J'utilise grunt-contrib-jshint 0.4.3 , qui utilise jshint 1.1.0 .

@johnpapa Je sais qu'il s'agit d'un problème clos, mais j'ai remarqué que le regroupement ASP.NET MVC posait également des problèmes avec _.catch_ lançant une erreur et ne menaçait pas le code.

À quoi ressemble le paquet résultant :

/* 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)

Une solution possible serait de changer les styles Y035 et Y060 pour utiliser les promesses régulières décrites sur les docs officiels d' AngularJS :

$http(req).success(function(){...}).error(function(){...});
Cette page vous a été utile?
0 / 5 - 0 notes