49 votes

JSHint prend-il en charge async/await ?

J'utilise JSHint pour le projet JavaScript (avec le code Visual Studio). Et dans ce projet j'utilise async / await, que JSHint met en évidence comme des erreurs.

J'ai essayé de configurer jshint, mais il semble que la version maximale de "esversion" soit 6.

Est-ce que jshint supporte async/await ? Si oui, comment l'activer ? Et si non, y a-t-il des solutions de contournement ?

55voto

colxi Points 2111

Mise à jour (février 2019) : Async/await sont maintenant supportés à partir de la version 2.10.1. Mettez simplement à jour votre .jshintrc pour utiliser "esversion": 9 . (+Info : Liste des changements de version )


Mise à jour (juillet 2018) : Async/await arrivera avec la sortie de JsHint 2.10.0. +info : https://github.com/jshint/jshint/pull/3273


La communauté de développement du JSHINT considère que :

  • JSHINT devrait d'abord supporter toute la syntaxe ES6 avant de commencer à implémenter les fonctionnalités ES7.
  • Les fonctions asynchrones n'en sont qu'à l'étape 1, donc la syntaxe peut beaucoup changer.

JSHINT-ESNEXT (PAQUET)

Cependant, il existe un paquet JSHINT non officiel qui contient support expérimental pour await/async appelé JSHINT-ESNEXT .

L'auteur, @ marcominetti a utilisé la branche Master officielle de JSHint 2.7 et a introduit cette fonctionnalité ES7, tirée de l'élément Seb Vincent esnextnext branche.

Vérifiez le Paquet Npm et le source dans github

Installation : $npm install -g jshint-esnext

À l'heure actuelle (juillet 2017), c'est la seule approche décente disponible pour prendre en charge await/async dans JSHINT.


JSHINT IGNORE (DIRECTIVE)

Une solution de contournement ou une pratique d'atténuation communément proposée consiste à utiliser les directives JSHINT ignore.

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

Ou :

ignoreThis(); // jshint ignore:line

Personnellement, je trouve cette pratique d'atténuation, sale et confuse, lorsque notre code comporte une grande quantité de références async/await. Mais les avertissements et les erreurs JSHINT sont encore plus confus et sales ;)

14voto

jfriend00 Points 152127

Est-ce que jshint supporte déjà async/await ?

Non, pas encore au début de l'année 2017.

Il semble qu'il ne supporte pas encore async/await . Les gens qui travaillent sur jsHint ont décidé de ne pas supporter async/await jusqu'à ce que les normes soient à un stade avancé (ayant apparemment été brûlé précédemment en soutenant des choses trop tôt quand elles étaient encore en train de changer) - bien que des implémentations existent déjà (Babel, nodejs, etc...).

Si vous suivez cette Fil de discussion ouvert sur les problèmes de jsHint La question est toujours en suspens, comme en témoignent les commentaires récents (7 et 11 jours).

Et si ce n'est pas le cas, existe-t-il des solutions de contournement ?

En juillet 2017, il semble y avoir un fork du code de jsHint appelé jshint-esnext qui a un support pour async/await ici : https://www.npmjs.com/package/jshint-esnext .

4voto

JoelABair Points 66

Remarque : L'utilisation du paquetage forké JSHINT-ESNEXT ( NPM y github ) comme suggéré dans la "réponse acceptée" nécessite l'inclusion de l'option "expérimental" à définir.

/* experimental: [asyncawait] */

o

/* experimental: [asyncawait, asyncreqawait] */

Voir le code source aquí pour les détails.

2voto

JohnN Points 11

L'OP a demandé s'il y avait des solutions de contournement. C'est un peu compliqué, mais j'ai remplacé tous mes "async" ou "await" par "async /**/" et "await /**/". Ensuite, un script rapide pour les échanger en '/*async*/' et '/*await*/' me permet de vérifier avec jshint.

Ce n'est pas joli, mais ça nourrit le bulldog.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X