Laravel Mix是否支持ES8?

时间:2017-08-26 11:19:42

标签: laravel async-await laravel-mix es2017

我正在使用Laravel mix编译我的javascript文件,因为我对Babel和package.json的了解不多,我想问一下Laravel Mix是否支持ES8,尤其是async / await?

如果我尝试一下,我无法判断Mix是否正在异步/等待ES5,或者我的浏览器是否支持async / await,这是最新版本。我仍然希望它被转换为ES2015,因此该应用程序仍然适用于仅支持ES5的浏览器。

1 个答案:

答案 0 :(得分:19)

async / await与Laravel Mix:

如果您使用Laravel Mix开箱即用并使用async并等待,则会收到以下错误消息:

  

未捕获的ReferenceError:未定义regeneratorRuntime

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

要使异步/等待工作,请使用以下内容将文件.babelrc添加到根目录:

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

并安装所需的npm包:

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

重要的是(导致错误)是transform-runtime插件。它没有使用Laravel Mix,但你需要它才能让异步/等待功能正常工作。

<强> ES8:

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

他们的网站上有overview of the stages