首页 > web前端 > js教程 > 为什么我在 Babel 6 中收到'regeneratorRuntime 未定义”错误,如何修复它?

为什么我在 Babel 6 中收到'regeneratorRuntime 未定义”错误,如何修复它?

DDD
发布: 2024-12-08 21:47:14
原创
580 人浏览过

Why am I getting a

Babel 6 中的 "regeneratorRuntime is not defined" 错误

在使用 Babel 6 时,您可能会遇到 "regeneratorRuntime is not defined" 错误,特别是在使用 async/await 语法时。这个错误表明您在设置 Babel 时缺少必需的依赖项或配置。

要解决此问题,您需要安装并配置 babel-polyfill。该库提供了一组 polyfill,可用于在不支持原生支持的功能的环境中支持现代 JavaScript 特性,例如 async/await。

安装依赖项

首先,使用 npm 安装 babel-polyfill 和其他必需的 Babel 依赖项:

npm i -D babel-core babel-polyfill babel-preset-es2015 babel-preset-stage-0 babel-loader
登录后复制

更新 package.json

更新您的 package.json 文件,将 babel-polyfill 添加到 devDependencies 中:

"devDependencies": {
  "babel-core": "^6.0.20",
  "babel-polyfill": "^6.0.16",
  "babel-preset-es2015": "^6.0.15",
  "babel-preset-stage-0": "^6.0.15"
}
登录后复制

更新 .babelrc

您不需要对 .babelrc 文件进行任何更改。它应如下所示:

{
  "presets": [ "es2015", "stage-0" ]
}
登录后复制

更新您的 JavaScript 文件

确保您正在使用 async/await 语法。例如:

"use strict";

export default async function foo() {
  var s = await bar();
  console.log(s);
}

function bar() {
  return "bar";
}
登录后复制

在启动文件中

在您的启动文件中,确保您正在注册 Babel 和 babel-polyfill:

require("babel-core/register");
require("babel-polyfill");
登录后复制

对于使用 webpack 的用户,请按照 @Cemen 的建议操作,将 babel-polyfill 设置为您的 webpack 配置文件中的 entry 数组的第一个值:

module.exports = {
  entry: ['babel-polyfill', './test.js'],

  output: {
    filename: 'bundle.js'       
  },

  module: {
    loaders: [
      { test: /\.jsx?$/, loader: 'babel', }
    ]
  }
};
登录后复制

对于 Mocha 测试,请使用以下命令:

mocha --compilers js:babel-core/register --require babel-polyfill
登录后复制

按照这些步骤,您应该能够解决 "regeneratorRuntime is not defined" 错误并使用 async/await 语法。

以上是为什么我在 Babel 6 中收到'regeneratorRuntime 未定义”错误,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板