【问题标题】:Does Laravel Mix support ES8?Laravel Mix 是否支持 ES8?
【发布时间】:2018-02-04 07:01:39
【问题描述】:

我正在用 Laravel mix 编译我的 javascript 文件,由于我对 Babel 和 package.json 还不是很了解,所以我想问一下 Laravel Mix 是否支持 ES8,尤其是 async/await?

如果我尝试一下,我无法判断 Mix 是否正在将 async/await 转换为 ES5,或者我的浏览器是否仅支持 async/await,这是最新版本。我仍然希望将其转译为 ES2015,以便该应用程序仍可在仅支持 ES5 的浏览器上运行。

【问题讨论】:

  • Laravel Mix 在后台使用 babel,如果将正确的插件添加到 babel,则支持 async/await 语法。我目前正在研究如何做到这一点,我会告诉你的。
  • @Cobolt 太好了,我们将不胜感激。很高兴知道您的调查进展如何,我很困惑,因为我不知道从哪里开始寻找,我在 Google 上搜索了很多但无济于事。

标签: laravel async-await laravel-mix ecmascript-2017


【解决方案1】:

使用 Laravel Mix 进行异步/等待:

如果你使用 Laravel Mix out of the Box 并使用 async and await 你会收到以下错误消息:

未捕获的 ReferenceError: regeneratorRuntime 未定义

但是 Laravel Mix 使用 Babel 来支持 ES2015。如果需要,我们可以自定义编译。

要使 async / await 正常工作,请将文件 .babelrc 添加到您的根目录中,其中包含以下内容:

{
  "presets": ["es2015", "stage-3"],
  "plugins": [
    "transform-runtime"
  ]
}

并安装所需的 npm 包:

npm install babel-preset-es2015 babel-preset-stage-3 babel-plugin-transform-runtime --save-dev

重要的(导致错误的)是转换运行时插件。它没有随 Laravel Mix 一起提供,但你需要它才能让 async / await 功能正常工作。

ES8:

正如你在上面看到的,你可以在 Babel 中使用不同的预设阶段。有了它们,您可以使用 ES8 或更高版本中包含的功能。例如 stage-3 带来了 async / await 功能。

他们的网站上有overview of the stages

【讨论】:

  • 建议您使用babel-preset-env。它包含 es2015 和 stage-3。那你只需要["env"]
猜你喜欢
  • 2022-12-15
  • 2020-12-16
  • 1970-01-01
  • 2020-09-02
  • 2014-11-29
  • 2017-12-18
  • 2016-04-12
  • 2019-07-07
  • 1970-01-01
相关资源
最近更新 更多