我正在使用Laravel mix编译我的javascript文件,因为我对Babel和package.json的了解不多,我想问一下Laravel Mix是否支持ES8,尤其是async / await?
如果我尝试一下,我无法判断Mix是否正在异步/等待ES5,或者我的浏览器是否支持async / await,这是最新版本。我仍然希望它被转换为ES2015,因此该应用程序仍然适用于仅支持ES5的浏览器。
答案 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。