如何将 ES2017 转换为 ES5

Posted

技术标签:

【中文标题】如何将 ES2017 转换为 ES5【英文标题】:How to transform ES2017 to ES5 【发布时间】:2017-11-08 19:41:46 【问题描述】:

我有一个带有 async/await 的 es2017 代码,我想将其转换为 es5,以便大多数 Node.js 版本都支持它。

我当前的 .babelrc 文件如下所示:


    "presets": ["es2015", "es2016", "es2017"]

所以我将 es2017 转换为 es2016,从 es2016 转换为 es2015,从 es2015 转换为 es5。

当我在使用 babel src -d dist -s 构建代码后尝试运行代码时,我收到错误消息:ReferenceError: regeneratorRuntime is not defined

如何将 es2017 代码转换为 es5?我想稍后发布代码并使其可供 node.js v4 及更高版本使用。

【问题讨论】:

你做的转换就好了,你只需要添加到babel polyfill中 @Bergi 如果我使用 babel-cli 构建,我该如何使用 babel-polyfill?我在任何地方都找不到该信息 相关:Transpile Async Await proposal with Babel.js?. 【参考方案1】:

感谢@Bergi,我找到了解决此ReferenceError: regeneratorRuntime is not defined 错误的方法。

我将transform-runtime 插件添加到我的.babelrc 中

现在我的 .babelrc 是:


    "presets": ["es2015", "es2016", "es2017"],
    "plugins": ["transform-runtime"]

现在没有任何错误,一切正常。

【讨论】:

以上是关于如何将 ES2017 转换为 ES5的主要内容,如果未能解决你的问题,请参考以下文章

如何将 npmjs.com 存储库中的 React 相关节点包转换为 ES5?

Webpack 没有将 ES6 转换为 ES5

将代码从 ES5 转换为 ES6 并导出未按预期工作

将代码从 ES5 转换为 ES6 并导出未按预期工作

将具有 addEventListener 和参数的箭头函数转换为常规 ES5 函数

ES5如何转换成ES6