未捕获的 ReferenceError:regeneratorRuntime 未在 React 中定义

IT技术 reactjs frontend react-functional-component
2021-05-21 11:47:25

我收到错误“未捕获的 ReferenceError:未定义 regeneratorRuntime”。请帮我找出错误以及如何解决它。

在此处输入图片说明

4个回答
  • 安装运行时依赖
npm i --save-dev @babel/plugin-transform-runtime
  • 将插件添加到您的 .babelrc 文件中
{
  "plugins": ["@babel/plugin-transform-runtime"]
}

更多信息:https : //babeljs.io/docs/en/babel-plugin-transform-runtime

TLDR;

  • 异步函数是生成器之上的抽象。
  • 所有主要浏览器和 Node10 及更高版本现在都支持异步函数和生成器。
  • 如果为了向后兼容而使用转译器(例如 babel),则需要一个额外的“层”来转换生成器。这意味着在运行时将 ES6 转换为 ES5,因为它们的语法不向后兼容。https://cmichel.io/how-are-generators-transpiled-to-es5

谢谢 它在我添加导入语句时起作用 -import regeneratorRuntime from "regenerator-runtime";在我使用 async/await 的组件中。

遇到这个问题(使用 Babel v7),即使按照建议安装了相关软件包,我仍然无法获取此错误的 id。检查了以下堆栈溢出帖子...

以下行动有所帮助:

  1. 转到 package.json 并在“jest”中添加以下内容(还添加了屏幕截图):

"moduleNameMapper": {
".+\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$": "identity-obj-proxy" }

在此处输入图片说明

  1. 运行测试时,在命令中使用以下后缀...

--setupFilesAfterEnv "./src/setupTests.js"

所以要运行测试,它将是:

$ jest /pathToTest/TestFile.test.js --setupFilesAfterEnv "./src/setupTests.js"

希望它可以帮助像它帮助我的人...

如果您确实有必要使用 async 功能,那么上述解决方案应该可行。解决此问题的另一种方法是使用常规Promise,至少在我的情况下是这样。