I'm using JSHint for the JavaScript project (with the Visual Studio Code). And in this project I use async / await, which JSHint highlights as errors.
I tried to set up jshint, but the it seems like the maxim version of "esversion" is 6.
Does jshint support async/await yet? If it does, how to turn it on? And if not, are there any workarounds?
The JSHINT developing community considers that:
JSHINT-ESNEXT (PACKAGE)
However, there is an unnoficial JSHINT package, wich contains experimental support for await/async, called JSHINT-ESNEXT.
The author, @marcominetti, used the official JSHint 2.7 Master branch and introduced this ES7 feature, taken from the Seb Vincent esnextnext branch.
Check the Npm Package, and the source in github
Right now (Jul 2017) this is the only decent available approach to support await/async in JSHINT.
JSHINT IGNORE (DIRECTIVE)
A common suggested workaround or mitigation practice, is using the JSHINT ignore directives.
Or:
I personally find this mitigation practice, dirty and confusing, when our code has a big amount of async/await references. But more confusing and dirty are the JSHINT warnings and errors ;)
The OP asked it there were any workarounds. It's a kludge, but I've replaced all my 'async' or 'await' with 'async /**/' and 'await /**/'. Then a quick script to swap them into '/*async*/' and '/*await*/' allows me to check with jshint.
It's not pretty, but it feeds the bulldog.
No, not yet as of early 2017.
It appears that it does not yet support
async/await
. Folks working on jsHint have decided not to supportasync/await
until standards were in a late stage (having apparently been burned previously by supporting things too early when they were still changing) - though implementations already exist (Babel, nodejs, etc...).If you follow this jsHint open issue thread, it is still an open issue as of recent comments 7 and 11 days ago.
As of July 2017, there appears to be a fork of the jsHint code called jshint-esnext that has support for async/await here: https://www.npmjs.com/package/jshint-esnext.
Note: Using the forked JSHINT-ESNEXT package (NPM, and github) as suggested in the "accepted answer" requires the inclusion of the "experimental" option to be set.
/* experimental: [asyncawait] */
or
/* experimental: [asyncawait, asyncreqawait] */
See the source code here for details.