我正在使用JSHint作为JavaScript项目(使用Visual Studio代码)。在这个项目中我使用async / await,JSHint突出显示为错误。
我试图设置jshint,但似乎“esversion”的格言版本是6。
jshint是否支持异步/等待?如果是,如何打开它?如果没有,是否有任何解决方法?
更新(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警告和错误更令人困惑和肮脏;)
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。
OP问它有任何变通方法。这是一个kludge,但我用'async / ** /'和'await / ** /'替换了所有'async'或'await'。然后,将它们交换为'/ * async * /'和'/ * await * /'的快速脚本允许我使用jshint进行检查。
它不漂亮,但它喂养斗牛犬。