JSHint是否支持async / await?

问题描述 投票:40回答:4

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

我试图设置jshint,但似乎“esversion”的格言版本是6。

jshint是否支持异步/等待?如果是,如何打开它?如果没有,是否有任何解决方法?

javascript node.js visual-studio-code jshint
4个回答
45
投票

更新(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(包装)

但是,有一个非正式的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(指令)

常见的建议解决方法或缓解措施是使用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警告和错误更令人困惑和肮脏;)


13
投票

jshint是否支持异步/等待?

不,尚未截至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


3
投票

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

/* experimental: [asyncawait] */

要么

/* experimental: [asyncawait, asyncreqawait] */

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


1
投票

OP问它有任何变通方法。这是一个kludge,但我用'async / ** /'和'await / ** /'替换了所有'async'或'await'。然后,将它们交换为'/ * async * /'和'/ * await * /'的快速脚本允许我使用jshint进行检查。

它不漂亮,但它喂养斗牛犬。

© www.soinside.com 2019 - 2024. All rights reserved.