首页 > 解决方案 > regeneratorRuntime 未定义(如何防止 babel 包含该 polyfill?)

问题描述

我继续得到:

App.jsx:11 Uncaught ReferenceError: regeneratorRuntime 未定义

在任何执行异步的行上。我不喜欢那个 polyfill,但我很难摆脱它:

app.jsx:11)

 const fetcher = (async () => {

  "@babel/cli": "^7.4.4",
   "@babel/core": "^7.4.4",
   "@babel/preset-env": "^7.4.4",
   "@babel/preset-react": "^7.0.0",
   "@types/react": "^16.8.17",
   "babel-preset-env": "^1.7.0"

这里是.babelrc

{
    "presets": [
        [
            "@babel/preset-env",
            {
                "targets": {
                    "chrome": ">70",
                },
                "exclude": ["transform-regenerator"]
            },
            "@babel/preset-react"
        ]
    ]
}

标签: babeljs

解决方案


如果你想使用 async, await with (ES6 or ES Next) 那么你必须安装 @babel/polyfill 但你不需要在 babelrc 文件中写任何东西。只需安装 npm install --save @babel/polyfill

从文档中:

因为这是一个 polyfill(它将在您的源代码之前运行),我们需要它是一个依赖项,而不是一个 devDependency

最后,您需要在 mainJS (App.js) 文件中导入 @bable/polyfill,例如:

import "@babel/polyfill";

推荐阅读