¿JSHint soporta async / await?


Estoy usando JSHint para el proyecto JavaScript (con el Código de Visual Studio). Y en este proyecto utilizo async / await, que JSHint resalta como errores.

Intenté configurar jshint, pero parece que la versión máxima de "esversion" es 6.

¿jshint soporta ya async / await? Si lo hace, ¿cómo encenderlo? Y si no, ¿ hay alguna solución alternativa?

Author: MDMower, 2017-03-07

4 answers

Actualización (julio de 2018) : Async/await llegará con el lanzamiento de JSHint 2.10.0. +info: https://github.com/jshint/jshint/pull/3273

La comunidad en desarrollo de JSHINT considera que:

  • JSHINT primero debería soportar toda la sintaxis de ES6 antes de comenzar a implementar características de ES7.
  • Las funciones asincrónicas solo están en la etapa 1, por lo que la sintaxis puede cambiar mucho

JSHINT-ESNEXT (PAQUETE)

Sin embargo, hay un paquete JSHINT no oficial, que contiene soporte experimental para await/async, llamado JSHINT-ESNEXT.

El autor, @marcominetti, usó la rama principal oficial de JSHint 2.7 e introdujo esta característica de ES7, tomada de la rama de Seb Vincent esnextnext.

Compruebe el paquete Npm, y la fuente en github

Instalación : install npm install-g jshint-esnext

En este momento (Jul 2017) este es el único enfoque decente disponible para soportar await/async en JSHINT.


JSHINT IGNORE (DIRECTIVA)

Una práctica común sugerida de solución alternativa o mitigación, es usar las directivas ignoradas de JSHINT.

// Code here will be linted with JSHint.
/* jshint ignore:start */
// Code here will be ignored by JSHint.
/* jshint ignore:end */

O:

ignoreThis(); // jshint ignore:line

Personalmente encuentro esta práctica de mitigación, sucia y confusa, cuando nuestro código tiene una gran cantidad de referencias async/await. Pero más confusas y sucias son las advertencias de JSHINT y errores;)

 28
Author: colxi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-06 02:25:37

¿jshint soporta ya async / await?

No, aún no a principios de 2017.

Parece que todavía no es compatible con async/await. La gente que trabaja en JSHint ha decidido no soportar async/await hasta que los estándares estén en una etapa tardía (aparentemente se han quemado previamente al soportar cosas demasiado pronto cuando todavía estaban cambiando), aunque ya existen implementaciones (Babel, nodejs, etc.)...).

Si sigues este hilo JSHint open issue , es sigue siendo un tema abierto a partir de los comentarios recientes hace 7 y 11 días.

Y si no, ¿hay alguna solución alternativa?

A partir de julio de 2017, parece haber una bifurcación del código JSHint llamada jshint-esnext que tiene soporte para async / await aquí: https://www.npmjs.com/package/jshint-esnext .

 13
Author: jfriend00,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-27 04:02:06

Nota: Usar el paquete bifurcado JSHINT-ESNEXT ( NPM, y github) como se sugiere en la "respuesta aceptada" requiere la inclusión de la opción "experimental" para ser establecida.

/* experimental: [asyncawait] */

O

/* experimental: [asyncawait, asyncreqawait] */

Vea el código fuente aquí para más detalles.

 2
Author: JoelABair,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-13 17:21:19

El OP le preguntó que había soluciones. Es un parche, pero he sustituido todos mis 'async' o 'esperan' con 'async /**/' y 'esperan /**/'. Luego un script rápido para cambiarlos a ' / * async* /'y'/ *await* / ' me permite verificar con jshint.

No es bonito, pero alimenta al bulldog.
 0
Author: JohnN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-05 12:45:44