import提升导致Fundebug报错:“请配置apikey”
摘要: 解释一下“请配置apikey”报错的原因。
部分Fundebug用户使用import来导入js文件时,出现了"请配置apikey"的报错,这是由于import提升导致的,下面我会详细解释一下这一点。
import提升
关于import提升,我们可以参考阮一峰的《ECMAScript 6 入门》。
import命令具有提升效果,会提升到整个模块的头部,首先执行。
foo();
import { foo } from 'my_module';
上面的代码不会报错,因为import的执行早于foo的调用。这种行为的本质是,import命令是编译阶段执行的,在代码运行之前。
因此,即使我们把import语句写在后面,它仍然会在其他语句之前执行。
import提升为何导致Fundebug报错?
Fundebug用户应该清楚,在接入fundebug-javascript插件之后,需要配置apikey,如下:
import * as fundebug from "fundebug-javascript";
fundebug.apikey = "API-KEY";
假设我们还需要import一个test.js文件,这个文件会抛出一个Error,如下:
// test.js
throw new Error("test")
一切看起来没有问题:
// main.js
import * as fundebug from "fundebug-javascript";
fundebug.apikey = "API-KEY";
import "./test"
但是,根据import提升,代码的实际执行顺序如下:
// main.js
import * as fundebug from "fundebug-javascript";
import "./test"
fundebug.apikey = "API-KEY";
这种情况下,第二行代码就会抛出错误,导致apikey复制语句不会执行,从而导致报错:“请配置apikey”。
这个问题并不需要解决
出于测试的目的,用户会去import一个立即报错的js文件,类似于前文提到的test.js。但是实际开发中,我们不可能这样做,否则应用会立即崩溃,更谈不上部署了。
我们写这篇博客的目的仅仅是解释一下原因,并分享一个非常简单的知识点“import提升”。
如何规避这个问题?
仅供参考,实际上没有必要这样做。
新建一个配置文件config.js,在这个文件中配置apikey:
fundebug.apikey = "API-KEY";
import配置文件:
// main.js
import * as fundebug from "fundebug-javascript";
import "./config"
import "./test"
这种情况下,配置apikey的语句被import代替了,也就不存在所谓"import提升"的问题,Fundebug将可以正常报错。
最后,感谢Fundebug用户龙哥的反馈和协助!
参考
关于Fundebug
Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了10亿+错误事件,付费客户有Google、360、金山软件、百姓网等众多品牌企业。欢迎大家免费试用!
版权声明
转载时请注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2019/02/26/import-cause-fundebug-apikey-error/
相关文章
- [转] webpack中配置Babel
- c# log4net报错配置问题
- docker 配置国内镜像地址
- IDEA 2021 整合 SSM 配置离线 Maven 3.8.1 报错大全 Since Maven 3.8.1 http repositories are blocked.
- win7配置flutter报错 运行flutter doctor报错及解决方法
- 戴文的Linux内核专题:24 配置内核 (20)
- Log4j 2.x--Pattern Layout配置详解及示例
- 【持续集成和交付】Jenkins配置邮件通知:实现当测试用例执行报错会进行邮件通知
- 发布mvc报错:403.14-Forbidden Web 服务器被配置为不列出此目录的内容
- 使用jasypt加密配置的时候,报错:DecryptionException: Unable to decrypt
- Dubbo配置参数的优先级
- ANT下载和配置
- JBoss AS 安装配置部署报错以及使用wildfly替换
- CentOS 7 安装php5.6,Nginx,Memcached环境及配置
- 浅析Nginx实践里的常见概念:跨域及简单请求和非简单请求是什么、正向代理和反向代理是什么、负载均衡是什么、动静分离是什么、Nginx的配置语法及常用典型配置
- 关于webpack配置webpack-dev-server 报错问题。Error: Cannot find module 'webpack-cli/bin/config-yargs'
- 【FAQ】【Push Kit】推送服务,回执配置一直报错、回执过期修改、怎么删除配置的回执
- SpringBoot配置集成log4j统一处理请求日志(AOP)
- Android + Eclipse + PhoneGap 2.9.0 安卓最新环境配置,部分资料整合网上资料,已成功安装.