Angular-styleguide: jshint tiene problemas con .catch

Creado en 31 ene. 2015  ·  10Comentarios  ·  Fuente: johnpapa/angular-styleguide

Realmente aprecio el pensamiento y el esfuerzo que se ha invertido en esta guía de estilo.

Tengo problemas al usar jshint y algunos de los ejemplos utilizados en la guía. Por ejemplo:

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

    }

Cuando mi proceso de gruñido ejecuta jshint obtengo:
screen shot 2015-01-30 at 9 54 51 pm

Una solución alternativa simple es usar la notación entre corchetes (ew) por catch , pero personalmente encuentro esto desagradable. Intenté proporcionar la configuración recomendada de .jshintrc pero no tuve suerte. Esto podría necesitar una pequeña aclaración, pero también podría ser un error de usuario de mi parte.

¡Gracias!

help wanted

Comentario más útil

Extraño. No entiendo esto. ¿Versión antigua de jshint?

Puede buscar aquí: http://jslinterrors.com/expected-an-identifier-and-instead-saw-aa-reserved-word/

Sugiere las directivas /*jshint es5: true */ o /*jshint -W024 */ .

Pero como John, nunca tuve que hacer nada especial.

Todos 10 comentarios

No veo eso ... ¿lo comparaste con las reglas jshintrc que proporcioné en mis repositorios?

Intenté usar la configuración de JSHint proporcionada en la sección JSHint , que parece ser la misma en el proyecto ng-demos / modular, pero sigo recibiendo el mismo error. Si esa es la misma configuración que está usando, no estoy seguro de por qué recibo este error y usted no.

Después de mirar un poco más de cerca las opciones de JSHint , la configuración de es5 establecida en true solucionó.

De los Documentos:

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

Si esto es algo que cree que agrega valor, puedo enviar un PR, pero estoy un poco indeciso ya que no está experimentando el mismo comportamiento. Hay muchas ideas geniales en esta guía de estilo. Me he beneficiado muchísimo. Así que gracias por hacer esto público. Muy apreciado.

Sí, esto es extraño ... No lo he analizado en profundidad, pero no tengo ningún problema cuando copio su código exacto en mi editor y no configuro la configuración de es5 en absoluto. Dejemos esto abierto por ahora y veamos si otros lo entienden.

cerrando debido a que ninguna otra gente ha visto esto

Acabo de enfrentar el mismo problema.


Mi código:

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

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

Mi grunt config:

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

Versión del complemento jshint :

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

¿Echaba de menos el 'uso estricto'; ?

@wardbell no, 'use strict;' no falta.

Extraño. No entiendo esto. ¿Versión antigua de jshint?

Puede buscar aquí: http://jslinterrors.com/expected-an-identifier-and-instead-saw-aa-reserved-word/

Sugiere las directivas /*jshint es5: true */ o /*jshint -W024 */ .

Pero como John, nunca tuve que hacer nada especial.

Configurar es5: true resolvió mi problema. ¡Un millón de gracias!
Respecto a las versiones. Yo uso grunt-contrib-jshint 0.4.3 , que usa jshint 1.1.0 .

@johnpapa Sé que este es un problema cerrado, pero noté que la agrupación de ASP.NET MVC también tiene problemas con _.catch_ que arroja un error y, en realidad, no menciona el código.

Cómo se ve el paquete resultante:

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

Una posible solución sería cambiar los estilos Y035 y Y060 para usar las promesas regulares descritas en los documentos oficiales de AngularJS:

$http(req).success(function(){...}).error(function(){...});
¿Fue útil esta página
0 / 5 - 0 calificaciones