项目突然报错Uncaught ReferenceError: regeneratorRuntime is not defined
之前老版本的babel不能正常发挥作用,导致浏览器无法翻译es7语法,于是全部替换了新版本的babel7
在package.json中更换如下依赖,如有新版本请用npm更新至新版本
"@babel/cli": "^7.17.10",
"@babel/core": "^7.18.0",
"@babel/plugin-transform-runtime": "^7.18.0",
"@babel/polyfill": "^7.12.1",
"@babel/preset-env": "^7.18.0",
"@babel/preset-react": "^7.17.12",
"babel-eslint": "10.1.0",
"babel-jest": "26.0.1",
"babel-plugin-component": "1.1.1",
"babel-plugin-dynamic-import-node": "2.3.3",
接下来就是最重要的配置环节,在babel.config.js或…babelrc中配置如下在
presets: [
['@vue/babel-preset-jsx'],//如果报了jsx 的错就引用一下,控制台报错还让引@babel/preset-react但我是vue的项目,傻乎乎的引进后报了个React的错,删掉就好
[
"@babel/preset-env",
{
"targets": { //哪个浏览器版本无法识别es新语法就设置哪个版本
"edge": "17",
"firefox": "60",
"chrome": "67",
"safari": "11.1",
"node" : "14"
},
"useBuiltIns": "entry",
"corejs": 3//看你的corejs是什么版本的
}
]
]
关键在下面
"useBuiltIns": "entry"```
useBuiltIns: 有三个属性 false | “entry” | “usage”
“usage” 自动检测文件中使用的需要引入垫片的地方并自动引入对应的垫片。(官方推荐)
“entry” 在入口处手动引入垫片
按理来说使用usage就可以,实测不行。我这依旧报错,需要使用entry, 在main.js中引入
import '@babel/polyfill'
接着引入插件
plugins: [
['@babel/plugin-transform-runtime',
{
helpers: false,
//polyfill: false, 一定不要有这个,在新版本中官方已经将它移除了,填了它似乎会报错
regenerator: true,
}
]
]
如果报了polyfill has been removed 请把polyfill删了