【问题标题】:eslint await Expected an assignment or function call and instead saw an expressioneslint await 期望一个赋值或函数调用,而是看到一个表达式
【发布时间】:2017-02-10 12:11:25
【问题描述】:

当我放置此代码以保证不需要执行结果时:

await resultNotNeeded(bla, foo);

我收到了这个 eslint 错误:

[eslint] 期望一个赋值或函数调用,而是看到一个 表达。 (没有未使用的表达式)

如果代码是这样的:

const dummy = await resultNotNeeded(bla, foo);

那么eslint报错就是:

[eslint] 'dummy' 已定义但从未使用过(no-unused-vars)

任何人都知道应该如何解决这个问题(我知道我可以这样做// eslint-disable-line no-unused-expressions但我正在寻找这个语句是否有更好的语法。

【问题讨论】:

  • 如果异步代码失败怎么办?
  • 好吧,如果您不需要结果,那么它一个未使用的表达式。只需禁用规则即可。
  • 诚然,这是规则中的一个错误。如果他们想允许函数调用产生副作用,他们也应该允许await 表达式。请在 eslints 问题跟踪器上报告。
  • @thefourtheye,对于这种情况,我认为这不是问题所在,await 被包围在try {} catch {} 块中,我没有在这里写它以简化问题并将问题集中在问题上。 @bergi,谢谢,是eslint没有更新的问题
  • “这是否意味着我不能在 node 中使用它与 babel?” 不,Babel 允许您使用尚未原生支持的(未来)功能。这正是 Babel 使您能够做到的。 “有什么含义?” 只是这还不是语言的正式部分。 “是否总是需要 polyfill?” 一旦该功能正式成为该语言的一部分,引擎将原生支持它(sonner 或更高版本)。 ES7(ES2016)于今年 6 月左右发布。 async/await目前是计划于明年发布的提案:github.com/tc39/proposals/blob/master/finished-proposals.md

标签: javascript async-await lint eslint ecmascript-2017


【解决方案1】:

此问题已在eslint@3.6.0 中修复。

问题是我的系统中没有更新 eslint,我有eslint@2.13.1。 npm 也不是最新的,所以npm i eslint@latest -g 没有更新 eslint。

我必须安装npm@3.10.7(首先我更新到npm@3.10.8但它不起作用,所以我不得不从npm github和sudo make install下载源代码)然后我可以更新eslint@3.7.0

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2020-02-12
    • 2019-10-15
    • 2020-11-08
    • 1970-01-01
    相关资源
    最近更新 更多