Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does JSHint support async/await?

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?

like image 558
Alena Gilevskaya Avatar asked Mar 06 '17 23:03

Alena Gilevskaya


People also ask

Is JSHint deprecated?

Warning This option has been deprecated and will be removed in the next major release of JSHint. JSHint is limiting its scope to issues of code correctness. If you would like to enforce rules relating to code style, check out the JSCS project.

What is Jshintrc file?

JSHint is a program that flags suspicious usage in programs written in JavaScript. The core project consists of a library itself as well as a CLI program distributed as a Node module.


2 Answers

Update (February 2019) : Async/await are now supported as of version 2.10.1. Simply update your .jshintrc to use "esversion": 9. (+Info : Version changelog)


Update (july 2018) : Async/await will arrive with the release of JsHint 2.10.0. +info : https://github.com/jshint/jshint/pull/3273


The JSHINT developing community considers that:

  • JSHINT should first support all the ES6 syntax before start implementing ES7 features.
  • Async Functions are only at stage 1, so the syntax can change a lot

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

Installation: $npm install -g jshint-esnext

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.

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

Or:

ignoreThis(); // jshint ignore:line 

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

like image 187
colxi Avatar answered Sep 30 '22 05:09

colxi


Does jshint support async/await yet?

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 support async/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.

And if not, are there any workarounds?

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.

like image 38
jfriend00 Avatar answered Sep 30 '22 06:09

jfriend00