Jest 测试时出现 ReferenceError: regeneratorRuntime is not defined 的解决方法

阅读时长 3 分钟读完

在进行前端开发的过程中,使用 Jest 来进行单元测试是一个非常好的选择。然而,在测试文件中,当使用 ES6 的 Generator 函数或 async/await 时,有时会出现 "ReferenceError: regeneratorRuntime is not defined" 的错误。

这个错误的原因是因为测试文件缺少 Babel 的 runtime 插件,而这个插件是在 Babel 转译代码时所必需的。runtime 插件含有在转义过程中所需要的辅助函数和 regenerator-runtime(支持转移 Generator 函数和 async/await 的 JavaScript 运行时库)。

为了解决这个问题,我们需要在测试文件中添加 @babel/runtime 和 @babel/plugin-transform-runtime 依赖,并在 .babelrc 文件中添加一些配置。

以下是具体的解决方案。

安装依赖

首先,我们需要在项目中安装 @babel/runtime 和 @babel/plugin-transform-runtime:

修改 .babelrc 文件

接下来,我们需要在项目的 .babelrc 文件中添加如下配置:

-- -------------------- ---- -------
-
  ---------- -
    -
      --------------------
      -
        -------------- --------
        --------- -
      -
    -
  --
  ---------- -
    -
      ----------------------------------
      -
        --------- -
      -
    -
  -
-

测试文件添加 RegeneratorRuntime

以上解决方案适用于 Jest 24.0.0 以上版本。

总结

在 Jest 测试时出现 ReferenceError: regeneratorRuntime is not defined 的问题,通常是由缺少 Babel 的 runtime 插件所造成的。我们可以通过安装 @babel/runtime 和 @babel/plugin-transform-runtime 依赖,并在 .babelrc 文件中添加一些配置来解决这个问题。同时,在测试文件中添加 RegeneratorRuntime 也可以有效解决问题。这个问题的解决方法能够帮助前端开发者更好地使用 Jest 进行单元测试。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64535751968c7c53b07c5b85

纠错
反馈