Uncaught ReferenceError: regeneratorRuntime is not defined

vue2 的项目,控制台报 Uncaught ReferenceError: regeneratorRuntime is not defined 这个错误,虽然并没有影响业务,但是错误日志太多了。

查看错误堆栈,是一个 commonjs 打包后的cdn文件里报的,原因就是 es6 转 es5 。不能处理 Promise 这种异步的写法。

网上搜搜,很多文章告诉你使用 @babel/plugin-transform-runtime 进行编译,但是作为被 vue-cli 这种宠坏的前端来说,webpack 只是听过其名字,你要他去编译,根本无从下手。

当然我也只是好一点点,知道要在项目根目录下加个 .babelrc 的文件,其他也是两眼摸黑。

首先查看项目的 webpack 版本

2024年了,webpack5 正不流行(vite新秀), 所以项目很可能是,webpack 4.x \ webpack 3.x 的,相信老一辈前端很爱玩这个。

于是,你安装 @babel 开头人包是不对的, 这种基本是 node 16 以上的版本出来的了,报错机会极大。

所以你看看你的 项目里安装的是 babel-core ,应该不是 @babel/core 那么,基本就知道了。

babel-core 6.x , 最新的版本可能行不通了 babel-preset-env babel-plugin-transform-runtime , 对应的 @babel/plugin-transform-runtime 也是行不通

配置babel

还有人叫你改 webpack.config.js 的,不知道为什么,我的也没有生效。

选项 polyfill

polyfill

boolean, 默认为 true。

是否切换新的内置插件(Promise,Set,Map等)为使用非全局污染的 polyfill。

.babelrc 文件加入如下代码:

js 复制代码
{
  "presets": [

    ["env", { "modules": false }],

    "stage-2"

  ],

  "plugins": ["transform-runtime"],

  "comments": false,
  "plugins": [
      [
          "transform-runtime",
          {
              "helpers": false,
              "polyfill": false,
              "regenerator": true, //必须
              "moduleName": "babel-runtime", //必须
          }
      ]
  ]
}

编译出来不报错就成功了。 如果对你有帮助,记得一键三连。

相关推荐
PYB310 小时前
【Web·JS·基础】函数的使用和展运算符...objs
前端·javascript
默_笙11 小时前
🚥 给 RAG 装一台心电监护仪:LangSmith 全链路观测(上)
前端·javascript
变与不变80613 小时前
js同步和异步难点重点详解
开发语言·javascript·ecmascript
Dovis(誓平步青云)13 小时前
多个链接不等于多份证据,新闻核验看板怎样合并来源
java·服务器·前端·javascript·人工智能·pdf·电脑
Dovis(誓平步青云)14 小时前
几个方案来回选不定?做一个随时切换的候选推荐页
android·java·服务器·开发语言·javascript·数据库·智能化
可乐鸡翅yeah_15 小时前
fmp4 碎片 MP4 格式 HLS 流,和传统 TS 分片有什么不一样
开发语言·javascript·ios·音视频·safari·m3u8·m3u8在线播放
ss27316 小时前
AI全栈实战 | 2.3-01 组件库实战:Element Plus 怎么搭出专业界面,过度封装为什么成维护负担
前端·javascript·elementui·vue
福兮说16 小时前
URL 编码的七个坑:c++ 传到后端变空格、%25 套娃、截断 emoji 直接报错
开发语言·前端·javascript·node.js·url
小的时候可菜了17 小时前
JS 异步的本质:从单线程到 thenable(一条进化链)
开发语言·前端·javascript
liangshanbo121517 小时前
Webpack vs Vite 底层原理高频追问的问题
前端·webpack·node.js