JSHint是否支持async / await?

时间:2017-03-06 23:39:45

标签: javascript node.js visual-studio-code jshint

我使用JSHint作为JavaScript项目(使用Visual Studio代码)。在这个项目中,我使用async / await,JSHint突出显示为错误。

我尝试设置jshint,但它似乎是" esversion"的格言版本。是6。

jshint是否支持async / await?如果是,如何打开它?如果没有,是否有任何解决方法?

4 个答案:

答案 0 :(得分:40)

  

更新(2019年2月):自版本2.10.1起,现在支持Async / await。只需更新您的.jshintrc即可使用"esversion": 9。 (+信息:Version changelog

  

更新(2018年7月):Async / await将随着JsHint 2.10.0的发布而到达。 + info:https://github.com/jshint/jshint/pull/3273

JSHINT开发社区认为:

  
      
  • 在开始实现ES7功能之前,JSHINT应首先支持所有ES6语法。
  •   
  • 异步函数仅在第1阶段,因此语法可以改变很多
  •   

JSHINT-ESNEXT(PACKAGE)

但是,有一个无关的JSHINT包,包含 await / async 的实验支持,名为 JSHINT-ESNEXT

作者@ marcominetti使用了官方JSHint 2.7 Master分支,并引入了这个来自Seb Vincent esnextnext分支的ES7功能。

检查Npm Packagesource in github

  

安装:$ npm install -g jshint-esnext

现在(2017年7月)这是在JSHINT中支持await / async的唯一合适的方法。

JSHINT IGNORE(DIRECTIVE)

常见的建议解决方法或缓解措施是使用JSHINT ignore指令。

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

或者:

ignoreThis(); // jshint ignore:line

当我们的代码有大量的异步/等待引用时,我个人发现这种缓解做法,肮脏和混乱。但更麻烦和更脏的是JSHINT警告和错误;)

答案 1 :(得分:13)

  

jshint是否支持async / await呢?

不,尚未截至2017年初。

它似乎还不支持async/await。在jsHint工作的人决定不支持async/await,直到标准处于后期阶段(显然先前已经通过在他们仍在改变时过早地支持事物而被烧毁) - 虽然已经存在实现(Babel,nodejs等)。 ..)。

如果您遵循此jsHint open issue thread,则截至7天和11天前的最新评论仍然是一个未解决的问题。

  

如果没有,是否有任何解决方法?

截至2017年7月,似乎有一个名为jshint-esnext的jsHint代码的分支,它支持async / await:https://www.npmjs.com/package/jshint-esnext

答案 2 :(得分:3)

注意:使用“已接受答案”中建议的分叉JSHINT-ESNEXT包(NPMgithub)需要包含要设置的“experimental”选项。

/* experimental: [asyncawait] */

/* experimental: [asyncawait, asyncreqawait] */

有关详细信息,请参阅源代码here

答案 3 :(得分:1)

OP告诉它有任何解决方法。它是一个kludge,但我已经取代了我所有的异步'或等待'等待'与' async / ** /'和' await / ** /'。然后是一个快速脚本,将它们交换为' / * async * /'和' / *等待* /'允许我用jshint检查。

它并不漂亮,但它会给斗牛犬提供食物。