regeneratorRuntime is not defined, Vue3+electron项目

问题出现:我调用了一个叫做gdb-js的module,而该module需要使用regeneratorRuntime。

我当时按照网上说的安装了@babel/plugin-transform-runtime,配置了babel.config.js。但是没有解决。

当时我感到很奇怪的是,我自己在文件中使用ES6语法可以正常转义,但是运行项目就是报错,于是我考虑了是否是babel没有转义node_module中的文件,于是我找到了这篇文章:

https://www.jianshu.com/p/4bd68d2b07b3

关键点在于:

vue-cli3.x的项目初始化时会引入一个插件,名为@vue/cli-plugin-babel
@vue/cli-plugin-babel:默认已引入
默认使用 Babel 7 + babel-loader + @vue/babel-preset-app,也就是无需再单独引入babel-loader等转换插件了

因此使用vue3的,不要看网上那些攻略了,不是那个原因。

此时我发现按照vue-cli的说法,确实可能没有转义mode_module中的包,需要配置:https://cli.vuejs.org/zh/guide/browser-compatibility.html#browserslist

如果该依赖基于一个目标环境不支持的 ES 版本撰写: 将其添加到vue.config.js 中的 transpileDependencies 选项。这会为该依赖同时开启语法转换和根据使用情况检测 polyfill。

让我崩溃的是我的transpileDependencies已经设置为true了(默认建项目的时候设置的是true),意味着应该会转义所有的node_module中的包。

后来我看了下出问题的地方,直接使用了regeneratorRuntime,此时我终于考虑到应该全局注册regeneratorRuntime。然后我尝试在main.ts中进行注册,结果还是不行(一开始也这样试过),最后在preload.ts中注册成功。

扫描二维码关注公众号,回复: 14673294 查看本文章

解决方法:在preload.ts中加入:

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

应该是哪里调了这个包,就在哪里加一下,我是在preload中调的。如果不确定的话,可以用console.log(regeneratorRuntime)看下是否存在。

猜你喜欢

转载自blog.csdn.net/HGGshiwo/article/details/127519498
今日推荐