我使用JSHint作为JavaScript项目(使用Visual Studio代码)。在这个项目中,我使用async / await,JSHint突出显示为错误。
我尝试设置jshint,但它似乎是" esversion"的格言版本。是6。
jshint是否支持async / await?如果是,如何打开它?如果没有,是否有任何解决方法?
答案 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包,包含 await / async 的实验支持,名为 JSHINT-ESNEXT 。
作者@ marcominetti使用了官方JSHint 2.7 Master分支,并引入了这个来自Seb Vincent esnextnext分支的ES7功能。
检查Npm Package和source in github
安装:$ npm install -g jshint-esnext
现在(2017年7月)这是在JSHINT中支持await / async的唯一合适的方法。
常见的建议解决方法或缓解措施是使用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包(NPM和github)需要包含要设置的“experimental”选项。
/* experimental: [asyncawait] */
或
/* experimental: [asyncawait, asyncreqawait] */
有关详细信息,请参阅源代码here。
答案 3 :(得分:1)
它并不漂亮,但它会给斗牛犬提供食物。