【问题标题】:Babel: "The keyword 'await' is reserved (53:24)"Babel:“保留关键字‘await’ (53:24)”
【发布时间】:2017-02-08 14:07:49
【问题描述】:

我们在 Meteor 项目中使用 async/await。这种语法在我们的 resolvers.js 中无处不在。在我们升级到 Node 6.7 之前,一切都运行良好。现在每次我们尝试构建它时它都会显示这个错误:

“保留关键字‘await’ (53:24)”

有人知道怎么解决吗?

这是我的 .babelrc 文件的内容:

{
  "presets": ["es2015", "stage-2", "react"],
  "plugins": ["react-require", "babel-root-slash-import"]
}

【问题讨论】:

  • 请注意,指数运算符正在从stage-3(隐式包含在stage-2)移动到预设的es2016,并且async/await 和尾随函数逗号正在移动到es2017,所以你应该改用那些。
  • 我尝试将“es2015”更改为“es2017”,但还是同样的错误。
  • 您不应将es2015 更改为es2017,而应添加es2016es2017 而不是stage-2。 (["es2015", "es2016", "es2017", "react"])。无论如何,这并不是一个可能的解决方案,只是一个“提醒”它很快就会改变。
  • 哦,对不起。好的,试试这个。
  • 还是不行。除了 .babelrc,还有其他可能的因素吗?

标签: node.js meteor async-await babeljs


【解决方案1】:

以防万一其他人搜索相同的问题,在我的情况下,这是用户错误,我。我忘了把 async 关键字放在函数名之前。

【讨论】:

  • 如果您有多个箭头函数,请确保将await 放在正确的前面。示例:const result = (data, url) => async dispatch => { ... }
【解决方案2】:

好的,我找到了解决我自己问题的方法。我只是在进行 Meteor 构建时排除了 .babelrc,因为 Meteor 已经有一个支持 ES6 语法的包。我没有完全删除 .babelrc,因为我将在测试和运行不会触发 Meteor 构建的 Storybook 时需要它。

【讨论】:

    【解决方案3】:

    单独等待是无效的语法。 await 需要在异步函数中调用,例如:

    var aFunction = async function() {
      let aResponse = await get('aValue');
    }
    

    【讨论】:

      猜你喜欢
      • 2018-06-18
      • 2023-03-24
      • 2019-01-06
      • 1970-01-01
      • 2017-05-24
      • 2019-08-03
      • 1970-01-01
      • 2011-09-09
      相关资源
      最近更新 更多