Babel 6中regeneratorRuntime未定义

827

我正在尝试在Babel 6上从头开始使用async/await,但是我遇到了regeneratorRuntime未定义的问题。

.babelrc 文件

{
    "presets": [ "es2015", "stage-0" ]
}

package.json文件

"devDependencies": {
    "babel-core": "^6.0.20",
    "babel-preset-es2015": "^6.0.15",
    "babel-preset-stage-0": "^6.0.15"
}

.js 文件

"use strict";
async function foo() {
  await bar();
}
function bar() { }
exports.default = foo;

不使用async/await正常运行。有什么想法我做错了吗?


3
babel-polyfill 是您所需要的。 - Ronnie Royston
babel-polyfill已于7.4版本被弃用;这篇更新的Stack Overflow帖子描述了迁移过程。 - JWCS
对于使用较新版本的 Babel 和 Node 的人:https://dev59.com/Y6rka4cB1Zd3GeqPi8ZG#62254909 - Mon
babel预设环境并没有做它所声称的事情:https://github.com/babel/babel/issues/7619#issuecomment-375430112 - aderchox
48个回答

1

我已经使用webpack/babel构建实现了异步等待:

"devDependencies": {
    "babel-preset-stage-3": "^6.11.0"
}

.babelrc:

"presets": ["es2015", "stage-3"]

1
  1. 安装 babel-polyfill npm install --save @babel/polyfill

  2. 更新 webpack 文件 entry: ["@babel/polyfill", "<你的入口js文件>"]


1

导入 'babel-polyfill'

你是否在使用 async await?


0
我在我的React应用程序中使用'async'和'await'时遇到了regeneratorRuntime未定义的错误。 'async'和'await'是ES7中的新关键字。 为此,您应该使用babel-preset-es2017。 安装此devDependencies:

`

"babel-preset-es2017": "^6.24.1",
"babel-preset-react": "^6.24.1",
"babel-preset-stage-0": "^6.24.1", `

并使用以下内容:

"presets": [ "es2017" , "stage-0" , "react" ]


1
babel-preset-es2017现在已经被弃用。 - SayJeyHi

0

在使用React预设之前使用stage-2预设对我很有帮助:

npx babel --watch src --out-dir . --presets stage-2,react

当安装了以下模块时,上述代码才能正常工作:

npm install babel-cli babel-core babel-preset-react babel-preset-stage-2 --save-dev

0
在一个场景中,如果使用 babel-plugin-external-helpsersbabel.buildExternalHelpers() 创建了一个自定义的 babelHelpers.js 文件,我发现对于客户来说最经济的解决方案是将 regenerator-runtime/runtime.js 前置到输出文件中,而不是所有的 polyfills。
// runtime.js
npm install --save regenerator-runtime

// building the custom babelHelper.js
fs.writeFile(
    './babelHelpers.js',
    fs.readFileSync('node_modules/regenerator-runtime/runtime.js')
    + '\n'
    + require('babel-core').buildExternalHelpers()
)

这个解决方案的大小约为20 KB,而不是包括babel-polyfill时的 ~230 KB。


0

0
当我尝试运行Mocha + Babel时,我遇到了这个问题。我有一个在开发中工作的`.babelrc`文件(请参见其他答案,它们非常完整),但是我的`npm run test`命令仍然抱怨`regeneratorRuntime未定义`。所以我修改了我的`package.json`文件:
"scripts": {
  "test": "mocha --require babel-polyfill --require babel-core/register tests/*.js"
}

阅读更多: https://babeljs.io/en/setup/#mocha-4


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接