摘要: 解释一下“请配置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用户龙哥的反馈和协助!

参考

  • 《ECMAScript 6 入门》
  • Fundebug文档 - JavaScript错误监控插件

关于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/

import提升导致Fundebug报错:“请配置apikey”相关推荐

  1. fundebug php,import提升导致Fundebug报错的解决方法(详细)

    本篇文章给大家带来的内容是关于import提升导致Fundebug报错的解决方法(详细),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 摘要: 解释一下"请配置apikey ...

  2. import提升导致Fundebug报错:“请配置apikey” 1

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 解释一下"请配置apikey"报错的原因. 部分Fundebug用户使用import来导入js文件 ...

  3. 解决MySQL事务未提交导致死锁报错 避免死锁的方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/xuheng8600/article/d ...

  4. beetlsql报错“请指定Sql类型“的解决方案

    解决 beetlsql使用dao自定义SQL语句时,有些情况下会报错"请指定Sql类型",这时需要在dao方法上加上@SqlStatement注解. 例如: @SqlResourc ...

  5. 【记录】IDEA未正确关闭导致打开报错,进不了主界面,含解决办法

    [记录]IDEA未正确关闭导致打开报错,进不了主界面,含解决办法 错误提示 解决方案 参考 错误提示 截取了错误的主要部分 java.util.concurrent.CompletionExcepti ...

  6. Log4j2 日志 依赖 jar包 缺失 导致启动报错 解决方法

    Log4j2 日志 依赖 jar包 缺失 导致启动报错 解决方法. 一个Java老项目,更新了日志工具,升级为Log4j2,在引入log4j-api-2.14.0.jar 和log4j-core-2. ...

  7. bison版本问题导致编译报错:‘parse.error‘ is not used

    bison版本问题导致编译报错:'parse.error' is not used 'parse.error' 问题定位和修正 问题发现 问题调查与定位 更新bison/flex版本 问题修正 一些参 ...

  8. 已解决(from docx import Document导包报错)ModuleNotFoundError: No module named ‘exceptions‘

    已解决(from docx import Document导包报错)ModuleNotFoundError: No module named 'exceptions' 文章目录 报错代码 报错翻译 报 ...

  9. Java IDEA import sun.reflect.ConstructorAccessor报错

    Java IDEA import sun.reflect.ConstructorAccessor报错 问题 解决 问题 报错如下图,发现是jdk版本的原因,如下是jdk: 11.0.6报错截图 解决 ...

最新文章

  1. PC如何接管手机的双因子身份验证 靠的是英特尔的CPU
  2. arcgis 坐标系 2000坐标系_干货 | 关于投影和坐标系那些事,你是否都已还给了老师?...
  3. spring— Spring与Web环境集成
  4. 原子微型结构信息应用到局部图形信息存储的猜想
  5. c# 找出目录下的所有子目录_Linux技巧:ls命令只列出子目录名和每行打印一个文件名
  6. MYSQL第一章 创建表 修改表名 删除字段 添加字段 修改地段名
  7. Python编译、运行、反编译pyc文件
  8. 如何查看Mac电池损耗?
  9. Android应用APP: 基于MobileNet和EfficientNet的图像分类模型_调试运行以及打包Tensorflow官方提供的Image classification demo
  10. 在线pdf转word
  11. Visual Studio安装.nupkg文件
  12. java api1.8中文版(由谷歌,百度,有道,必应翻译)
  13. 读张满胜之《英语语法新思维初级教程》
  14. 台达PLC开发笔记(一):台达PLC连接介绍,分别使用485、网口与台达PLC建立连接
  15. 雷军周鸿祎黄章,个性及扑朔迷离的关系
  16. JavaScript网课一
  17. 什么是价值投资?(Value Investing)
  18. java 双重检查锁 失效_关于多线程:为什么Java中双重检查锁定被打破?
  19. Java学习----前端3
  20. 睡眠键重启计算机,Windows10进入睡眠模式后按任意键会自动重启怎么办

热门文章

  1. acwing算法题--铁路与公路
  2. OpenStack Neutron浅析(四)
  3. php 获取鼠标的坐标,如何实时获取鼠标的当前坐标-
  4. JSF or PHP or ADF?!! :(
  5. 使用 pipe 在程序正文中捕获和处理信号
  6. 【随笔】游戏程序开发必知的10大基础实用算法及其讲解
  7. varnish 4.0 官方文档翻译12-VCL
  8. linux下防DDOS***软件及使用方法详解
  9. 常用命令linux下vi编辑器命令大全
  10. ***“出更”---获取源码的***