Babel 6再生器未定义运行时

我尝试在Babel 6上从头开始使用async/wait,但我得到的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/wait的情况下正常使用它可以正常工作。知道我做错了什么吗?

743954 次浏览

babel-polyfill(从Babel 7.4开始已弃用)是必需的。您还必须安装它才能让async/wait工作。

npm i -D babel-core babel-polyfill babel-preset-es2015 babel-preset-stage-0 babel-loader

package.json

"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

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

. js与async/wait(示例代码)

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

在启动文件中

require("babel-core/register");require("babel-polyfill");

如果您使用的是webpack,您需要将其作为entry数组的第一个值放在webpack配置文件中(通常是webpack.config.js),如@Cemens所述:

module.exports = {entry: ['babel-polyfill', './test.js'],
output: {filename: 'bundle.js'},
module: {loaders: [{ test: /\.jsx?$/, loader: 'babel', }]}};

如果您想使用Babel运行测试,请使用:

mocha --compilers js:babel-core/register --require babel-polyfill

或者,如果您不需要babel-polyfill提供的所有模块,您可以在webpack配置中指定babel-regenerator-runtime

module.exports = {entry: ['babel-regenerator-runtime', './test.js'],
// ...};

当将webpack-dev-server与HMR一起使用时,这样做可以大大减少每次构建时必须编译的文件数量。此模块作为babel-polyfill的一部分安装,因此如果您已经拥有,则可以使用npm i -D babel-regenerator-runtime单独安装。

注释如果您使用的是Babel 7,则该包已重命名为@Babel/插件-转换-运行时

除了polfill,我使用Babel-插件-转换-运行时。插件描述为:

外部化对帮助程序和内置程序的引用,自动对你的代码进行多填充,而不会污染全局变量。这实际上意味着什么?基本上,你可以使用内置的,如Promise、Set、Symbol等,以及无缝地使用所有需要多填充的Babel功能,没有全局污染,使其非常适合库。

它还包括对异步/等待以及ES 6的其他内置插件的支持。

$ npm install --save-dev babel-plugin-transform-runtime

.babelrc中,添加运行时插件

{"plugins": [["transform-runtime", {"regenerator": true}]]}

我有异步等待与webpack/Babel构建工作:

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

. Babelrc:

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

如果使用babel-preset-stage-2,则只需使用--require babel-polyfill启动脚本。

在我的情况下,这个错误是由Mocha测试抛出的。

以下修复了问题

mocha \"server/tests/**/*.test.js\" --compilers js:babel-register --require babel-polyfill

我有一个设置
webpack使用presets: ['es2015', 'stage-0']
摩卡正在运行webpack编译的测试。

为了让我的async/await测试工作,我所要做的就是使用--require babel-polyfill选项的摩卡:

mocha --require babel-polyfill

当我尝试使用ES6生成器时,我使用大口大口的汇总得到了这个错误:

gulp.task('scripts', () => {return rollup({entry: './app/scripts/main.js',format: "iife",sourceMap: true,plugins: [babel({exclude: 'node_modules/**',"presets": [["es2015-rollup"]],"plugins": ["external-helpers"]}),includePaths({include: {},paths: ['./app/scripts'],external: [],extensions: ['.js']})]})
.pipe(source('app.js')).pipe(buffer()).pipe(sourcemaps.init({loadMaps: true})).pipe(sourcemaps.write('.')).pipe(gulp.dest('.tmp/scripts')).pipe(reload({ stream: true }));});

我可能的情况下,解决方案是包括babel-polyfill作为凉亭组件:

bower install babel-polyfill --save

并将其添加为index.html中的依赖项:

<script src="/bower_components/babel-polyfill/browser-polyfill.js"></script>

更新

如果将目标设置为Chrome,它可以工作。但它可能不适用于其他目标,请参考:https://github.com/babel/babel-preset-env/issues/112

所以这个答案对于最初的问题来说是非常合适的。我将在这里保留它作为对babel-preset-env的参考。

一个简单的解决方案是在代码的开头添加import 'babel-polyfill'

如果您使用webpack,一个快速解决方案是添加babel-polyfill,如下所示:

entry: {index: ['babel-polyfill', './index.js']}

我相信我已经找到了最新的最佳实践。

查看此项目:https://github.com/babel/babel-preset-env

yarn add --dev babel-preset-env

使用以下内容作为您的Babel配置:

{"presets": [["env", {"targets": {"browsers": ["last 2 Chrome versions"]}}]]}

然后,您的应用程序应该可以在浏览器的最后两个版本Chrome。

您还可以将节点设置为目标或根据https://github.com/ai/browserslist微调浏览器列表

告诉我什么,别告诉我怎么做。

我真的很喜欢babel-preset-env的哲学:告诉我你想支持哪个环境,不要告诉我如何支持它们。这就是声明式编程的美妙之处。

我已经测试了asyncawait,它们确实有效。我不知道它们是如何工作的,我真的不想知道。我想把时间花在我自己的代码和业务逻辑上。多亏了babel-preset-env,它把我从Babel配置地狱中解放出来。

1-安装巴贝尔插件转换异步到模块方法,Babel-Polyfil-蓝鸟,Babel-preset-es2015,Babel-core:

npm install babel-plugin-transform-async-to-module-method babel-polyfill bluebird babel-preset-es2015 babel-core

2-添加您的js Babel Poly填充:

import 'babel-polyfill';

3-在您的. Babelrc中添加插件:

{"presets": ["es2015"],"plugins": [["transform-async-to-module-method", {"module": "bluebird","method": "coroutine"}]]}

来源:http://babeljs.io/docs/plugins/transform-async-to-module-method/

你得到一个错误,因为async/wait使用生成器,这是ES2016的功能,而不是ES2015。解决此问题的一种方法是安装ES2016的Babel预设(npm install --save babel-preset-es2016)并编译为ES2016而不是ES2015:

"presets": ["es2016",// etc...]

正如其他答案所提到的,您也可以使用PolyFill(但请确保在任何其他代码运行之前您是先装入PolyFill)。或者,如果您不想包含所有的poly填充依赖项,您可以使用Babel-re生成器-运行时Babel-插件-转换-运行时

你为什么要遵循我的答案?

回复:因为我要用最新的更新版本npm项目给你一个答案。

04/14/2017

"name": "es6","version": "1.0.0","babel-core": "^6.24.1","babel-loader": "^6.4.1","babel-polyfill": "^6.23.0","babel-preset-es2015": "^6.24.1","webpack": "^2.3.3","webpack-dev-server": "^2.4.2"

如果您使用此版本或更多UP版本的Npm和所有其他…所以只需要改变:

webpack.config.js

module.exports = {entry: ["babel-polyfill", "./app/js"]};

更改webpack.config.js文件后,只需将此行添加到代码顶部。

import "babel-polyfill";

现在检查一切正常。参考链接

也感谢@BrunoLM的精彩回答。

简单的解决方案:

npm install --save-dev babel-plugin-transform-runtimenpm install --save-dev babel-plugin-transform-async-to-generator

. Babelrc

{"presets": [["latest", {"es2015": {"loose": true}}],"react","stage-0"],"plugins": ["transform-runtime","transform-async-to-generator"]}

我修复了这个错误,通过安装Babel-Poly填充

npm install babel-polyfill --save

然后我把它导入我的应用程序切入点

import http from 'http';import config from 'dotenv';import 'babel-polyfill';import { register } from 'babel-core';import app from '../app';

为了测试,我在我的测试脚本中包含了——需要Babel-Polyfile

"test": "export NODE_ENV=test|| SET NODE_ENV=test&& mocha --compilersjs:babel-core/register --require babel-polyfill server/test/**.js --exit"

如果您使用Gulp+Babel作为前端,则需要使用Babel-Poly填充

npm install babel-polyfill

然后在所有其他脚本标记之上添加一个脚本标记index.html并引用node_modules

这些答案中的大多数都推荐了使用WebPack处理此错误的解决方案。但是,如果有人使用RollUp(像我一样),这是最终对我有用的方法(只是一个提醒,捆绑这个聚填充广告大约10k到他的输出大小):

. Babelrc

{"presets": [["env",{"modules": false,"targets": {"browsers": ["last 2 versions"]}}]],"plugins": ["external-helpers",["transform-runtime",{"polyfill": false,"regenerator": true}]]}

rollup.config.js

import resolve from 'rollup-plugin-node-resolve';import babel from 'rollup-plugin-babel';import uglify from 'rollup-plugin-uglify';import commonjs from 'rollup-plugin-commonjs';

export default {input: 'src/entry.js',output: {file: 'dist/bundle.js',format: 'umd',name: 'MyCoolLib',exports: 'named'},sourcemap: true,plugins: [commonjs({// polyfill async/await'node_modules/babel-runtime/helpers/asyncToGenerator.js': ['default']}),resolve(),babel({runtimeHelpers: true,exclude: 'node_modules/**', // only transpile our source code}),uglify()
]};

babel-regenerator-runtime现在是已弃用,而应该使用regenerator-runtime

要将运行时生成器与webpackbabel v7一起使用:

安装regenerator-runtime

npm i -D regenerator-runtime

然后在webpack配置中添加:

entry: ['regenerator-runtime/runtime',YOUR_APP_ENTRY]

对于希望使用babel-polyfill版本7^的人,请使用webpack ver3^。

npm安装模块npm i -D @babel/polyfill

然后在你的webpack文件中,在你的entry点中这样做

entry: ['@babel/polyfill', path.resolve(APP_DIR, 'App.js')],

在将我的项目转换为打字稿项目后,我开始收到此错误。据我所知,问题源于async/wait未被识别。

对我来说,通过在我的设置中添加两件事情来修复错误:

  1. 正如上面多次提到的,我需要在我的webpack条目数组中添加争分夺秒:

    ...
    entry: ['babel-polyfill', './index.js'],
    ...
  2. I needed to update my .babelrc to allow the complilation of async/await into generators:

    {"presets": ["es2015"],"plugins": ["transform-async-to-generator"]}

DevDependencies:

I had to install a few things into my devDependencies in my package.json file as well. Namely, I was missing the babel-plugin-transform-async-to-generator, babel-polyfill and the babel-preset-es2015:

 "devDependencies": {"babel-loader": "^6.2.2","babel-plugin-transform-async-to-generator": "^6.5.0","babel-polyfill": "^6.5.0","babel-preset-es2015": "^6.5.0","webpack": "^1.12.13"}

完整代码要点:

我从一个非常有用且简洁的GitHub要点中获得了代码,您可以找到这里

小心吊起的功能

我在同一个文件中同时使用了我的“poly的导入”和我的“异步函数”,但是我使用的函数语法将它提升到poly的上方,这会给我带来ReferenceError: regeneratorRuntime is not defined错误。

更改此代码

import "babel-polyfill"async function myFunc(){ }

对这

import "babel-polyfill"var myFunc = async function(){}

以防止它被悬挂在Polypill进口上方。

在使用babel.buildExternalHelpers()babel-plugin-external-helpsers创建自定义babelHelpers.js文件的场景中,我认为客户端成本最低的解决方案是将regenerator-runtime/runtime.js预先添加到输出中,而不是所有的Poly填充。

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

当包含babel-polyfill时,此解决方案减少到约20 KB而不是约230 KB。

我需要支持的目标浏览器已经支持async/wait,但是在编写mocha测试时,如果没有正确的设置,我仍然会遇到这个错误。

我在谷歌上搜索的大多数文章都已经过时了,包括这里的接受答案和高投票答案,即你不需要polyfillbabel-regenerator-runtimebabel-plugin-transform-runtime等。

我也不想使用webpack

Tyler Long的答案实际上是在正确的轨道上,因为他提出了babel-preset-env(但是我首先省略了它,因为他在开始时提到了POLFIL)。一开始我还是得到了ReferenceError: regeneratorRuntime is not defined,然后我意识到这是因为我没有设置目标。设置节点目标后,我修复了再生器orRuntime错误:

  "scripts": {//"test": "mocha --compilers js:babel-core/register"//https://github.com/mochajs/mocha/wiki/compilers-deprecation"test": "mocha --require babel-core/register"},"devDependencies": {"babel-core": "^6.26.3","babel-preset-env": "^1.7.0","mocha": "^5.2.0"},//better to set it .bablerc, I list it here for brevity and it works too."babel": {"presets": [["env",{"targets": {"node": "current""chrome": 66,"firefox": 60,},"debug":true}]]}

我在Chrome遇到过这个问题。类似于RienNeVaPlu的回答,这为我解决了它:

npm install --save-dev regenerator-runtime

然后在我的代码中:

import 'regenerator-runtime/runtime';

很高兴避免babel-polyfill中的额外200 kB。

我有再生器运行时未定义错误当我在我的反应应用程序中使用'async'和'wait'时'async'和'wait'是ES7中的新关键字为此,您应该使用Babel-preset-es2017安装这个开发依赖:

'

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

并使用此

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

对于Babel7用户和ParcelJS>=1.10.0用户

npm i @babel/runtime-corejs2npm i --save-dev @babel/plugin-transform-runtime @babel/core

. Babelrc

{"plugins": [["@babel/plugin-transform-runtime", {"corejs": 2}]]}

取自https://github.com/parcel-bundler/parcel/issues/1762

根据以下示例更新您的.babelrc文件,它将起作用。

如果您使用的是@babel/preset-env

{"presets": [["@babel/preset-env", {"targets": {"node": "current"}}]]}or if you are using babel-preset-env package
{"presets": [["env", {"targets": {"node": "current"}}]]}

Babel 7用户

我在解决这个问题时遇到了一些麻烦,因为大多数信息都是针对以前的Babel版本。对于Babel 7,安装以下两个依赖项:

npm install --save @babel/runtimenpm install --save-dev @babel/plugin-transform-runtime

并且,在. Babelrc中,添加:

{"presets": ["@babel/preset-env"],"plugins": [["@babel/transform-runtime"]]}

如果你正在构建一个应用程序,你只需要@babel/preset-env@babel/polyfill

npm i -D @babel/preset-envnpm i @babel/polyfill

(注意:您不需要安装core-jsregenerator-runtime软件包,因为它们都已由@Babel/Poly填充安装)

.babelrc中:

{"presets": [["@babel/preset-env",{"useBuiltIns": "entry"  // this is the key. use 'usage' for further codesize reduction, but it's still 'experimental'}]]}

现在设置您的目标环境。在这里,我们在.browserslistrc文件中这样做:

# Browsers that we support
>0.2%not deadnot ie <= 11not op_mini all

最后,如果您选择了useBuiltIns: "entry",请将import @babel/polyfill放在条目文件的顶部。否则,您就完成了。

如果您的任何目标环境/浏览器需要它们,则使用此方法将有选择地导入这些polfly和“再生器-运行时”文件(在此处修复您的regeneratorRuntime is not defined问题)只有

我在尝试运行Mocha+Babel时遇到了这个问题。我有一个.babelrc在开发中工作(参见此处的其他答案,它们非常完整),但我的npm run test命令仍然抱怨regeneratorRuntime is not defined。所以我修改了我的package.json

"scripts": {"test": "mocha --require babel-polyfill --require babel-core/register tests/*.js"}

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

我的工作Babel7样板与再生器运行时反应:

. Babelrc

{"presets": [["@babel/preset-env",{"targets": {"node": true,},},],"@babel/preset-react",],"plugins": ["@babel/plugin-syntax-class-properties","@babel/plugin-proposal-class-properties"]}

package.json

...
"devDependencies": {"@babel/core": "^7.0.0-0","@babel/plugin-proposal-class-properties": "^7.4.4","@babel/plugin-syntax-class-properties": "^7.2.0","@babel/polyfill": "^7.4.4","@babel/preset-env": "^7.4.5","@babel/preset-react": "^7.0.0","babel-eslint": "^10.0.1",...

main.js

import "@babel/polyfill";
....

更新巴别塔7后也有更深入的答案。


Babel 7.4.0或更高版本(core-js 2/3)

Babel 7.4.0开始,@babel/polyfill已弃用

一般来说,有两种方法可以安装Poly的/再生器:通过全局命名空间(选项1)或作为Pony填充(选项2,没有全局污染)。


选项1:@babel/preset-env

presets: [["@babel/preset-env", {"useBuiltIns": "usage","corejs": 3, // or 2,"targets": {"firefox": "64", // or whatever target to choose .},}]]

将根据您的目标自动使用regenerator-runtimecore-js。无需手动导入任何内容。不要忘记安装运行时依赖项:

npm i --save regenerator-runtime core-js

或者,设置useBuiltIns: "entry"并手动导入:

import "regenerator-runtime/runtime";import "core-js/stable"; // if polyfills are also needed

选项2:@babel/transform-runtime@babel/runtime

这种替代方案没有全局范围污染,适用于图书馆。

{"plugins": [["@babel/plugin-transform-runtime",{"regenerator": true,"corejs": 3 // or 2; if polyfills needed...}]]}
安装它:
npm i -D @babel/plugin-transform-runtimenpm i @babel/runtime

如果使用了corejs聚填料,则将@babel/runtime替换为@babel/runtime-corejs2(对于"corejs": 2)或@babel/runtime-corejs3(对于"corejs": 3)。

我正在使用React和Django项目,并通过使用regenerator-runtime使其工作。你应该这样做,因为@babel/polyfill会增加你的应用程序的大小,也是已弃用。我还按照本教程的第1和第2集创建了我的项目结构

*package.json*

..."devDependencies": {"regenerator-runtime": "^0.13.3",...}

.babelrc

{"presets": ["@babel/preset-env", "@babel/preset-react"],"plugins": ["transform-class-properties"]}

index.js

...import regeneratorRuntime from "regenerator-runtime";import "regenerator-runtime/runtime";ReactDOM.render(<App />, document.getElementById('app'));...

这个解决方案已经过时了。

我在这个视频的YouTube评论中找到了解决方案https://www.youtube.com/watch?v=iWUR04B42Hc&; lc=Ugyq8UJq-OyOzsKIIrB4AaABAg

这应该直接指向正确的注释。找到解决方案的“beth w”有很多道具。

Beth W 3个月前(编辑)
我在2019年不得不做的另一个改变-Babel显然不再使用v7的阶段0预设,所以在26:15而不是'npm install--save-dev Babel-poly的巴贝尔预设阶段0',我不得不这样做:

npm install --save @babel/polyfill

它涵盖了两个较旧的选项。然后,在应用程序的切入点中,我>包含了'@Babel/Polyill',在查询预设中,我保持原样。所以webpack配置最终看起来像:

const path = require('path');module.exports = {entry: {app: ['@babel/polyfill', './src/app.js']},output: {path: path.resolve(__dirname, 'build'),filename: 'app.bundle.js'},mode: 'development',module: {rules: [{test: /\.js?$/,exclude: /node_modules/,loader: 'babel-loader',query: {presets: ['@babel/preset-env']}}]}}

希望能帮助到别人!

截至2019年10月,这对我有用:

将其添加到预设中。

 "presets": ["@babel/preset-env"]

然后使用npm安装再生器运行时。

npm i regenerator-runtime

然后在主文件中使用:(此导入仅使用一次)

import "regenerator-runtime/runtime";

这将使您能够在文件中使用asyncawaits并删除regenerator error

供将来参考

从Babel版本7.0.0-beta.55起,已删除阶段预设

博客https://babeljs.io/blog/2018/07/27/removing-babels-stage-presets

async wait仍然可以被使用

https://babeljs.io/docs/en/babel-plugin-transform-async-to-generator#usage

安装

npm install --save-dev @babel/plugin-transform-async-to-generator

使用. Babelrc

 {"presets": ["@babel/preset-env"],"plugins": ["@babel/plugin-transform-async-to-generator"]}

并使用巴别塔聚填料https://babeljs.io/docs/en/babel-polyfill

安装

npm install --save @babel/polyfill

webpack.config.js

module.exports = {entry: ["@babel/polyfill", "./app/js"],};

在2019年,Babel 7.4.0+babel-polyfill包已被弃用,转而直接包含core-js/stablecore-js@3+,用于填充ECMAScript功能)和regenerator-runtime/runtime(需要使用转译生成器函数):

import "core-js/stable";import "regenerator-runtime/runtime";

信息来自babel-polyfill留档

在控制台中修复此“再生器或运行时未定义问题”的最简单方法:

您不必安装任何不必要的插件。只需添加:

<script src="https://unpkg.com/regenerator-runtime@0.13.1/runtime.js"></script>

在你的index.html.现在,一旦你运行Babel,就应该定义再生器运行时,现在你的async/wait函数应该成功编译到ES2015中

在反应预设之前使用第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

此错误是在没有适当的Babel插件的情况下使用async/await函数时导致的。截至2020年3月,您应该只需要执行以下操作。(@babel/polyfill和许多已被接受的解决方案在Babel中已被弃用。在Babel Docs中阅读更多内容)

在命令行中,键入:

npm install --save-dev @babel/plugin-transform-runtime

在您的babel.config.js文件中,添加此插件@babel/plugin-transform-runtime。注意:下面的示例包括我最近参与的一个小型React/Node/Express项目的其他预设和插件:

module.exports = {presets: ['@babel/preset-react', '@babel/preset-env'],plugins: ['@babel/plugin-proposal-class-properties','@babel/plugin-transform-runtime'],};

上面有这么多答案,我会把我的答案贴出来供我参考。我使用webpack并做出反应,这是我的解决方案没有. Babelrc文件

我在2020年8月做这个

安装React和Babel

npm i @babel/core babel-loader @babel/preset-env @babel/preset-react react react-dom @babel/plugin-transform-runtime --save-dev

然后在我的webpack.config.js

// other stuffmodule.exports = {// other stuff
module: {rules: [  
{test: /\.m?js$/,exclude: /(node_modules|bower_components)/,use: {loader: 'babel-loader',options: {presets: ['@babel/preset-env',"@babel/preset-react"],plugins: ['@babel/plugin-proposal-class-properties', '@babel/plugin-transform-runtime'],//npm install --save-dev @babel/plugin-transform-runtime}}},],},
};

我只是不知道为什么我暂时不需要安装异步包

只需安装:

npm install --save-dev @babel/plugin-transform-runtime

并将其添加到Babel的插件数组中。

只需安装再生器运行时下面的命令

npm i regenerator-runtime

在需要服务器文件之前在启动文件中添加以下行

require("regenerator-runtime/runtime");

到目前为止这对我很有效

或者,如果您没有使用像webpack或rollup这样的捆绑器,您可以在index.html.中使用普通的旧脚本标记导入https://raw.githubusercontent.com/facebook/regenerator/master/packages/regenerator-runtime/runtime.js的内容

不是最好的,但在我的情况下,唯一的解决方案。

  1. 安装@babel-polyfill并将其保存在您的开发依赖项中

npm install --save-dev @babel/polyfill

  1. Copy and Paste require("@babel/polyfill"); at the top your entry file

Entry.js

require("@babel/polyfill"); // this should be include at the top
  1. 在条目数组中添加@Babel/poly填充

  2. 您需要预设数组中的预设环境

webpack.config.js

const path =  require('path');require("@babel/polyfill"); // necesarry
module.exports = {entry: ['@babel/polyfill','./src/js/index.js'],output: {path: path.resolve(__dirname, 'to_be_deployed/js'),filename: 'main.js'},module: {rules: [{test: /\.m?js$/,exclude: /node_modules/,use: {loader: "babel-loader",options: {presets: ['@babel/preset-env']}}}]},
mode: 'development'}

  1. 安装Babel-Poly填充npm install --save @babel/polyfill

  2. 更新webpack文件entry: ["@babel/polyfill", "<your enter js file>"]

如果您使用的是Next js,请将import regeneratorRuntime from "regenerator-runtime";添加到引发错误的文件中,对我来说,该文件是_document.js

并添加

["@babel/plugin-transform-regenerator",{"asyncGenerators": false,"generators": false,"async": false}]

plugins中,在.babelrc文件中。

我使用了https://github.com/babel/babel/issues/9849#issuecomment-592668815的提示,并将targets: { esmodules: true,}添加到我的babel.config.js

module.exports = {presets: [['@babel/preset-env',{targets: {esmodules: true,},},],],}

导入'Babel-Polyfill'

如果你使用async wait

尝试将其添加到您的package.json

"browserslist": ["last 2 Chrome versions"]

这对我有用!