美文网首页
页面刷新之后白屏,看了vue源码才知道原来是这样

页面刷新之后白屏,看了vue源码才知道原来是这样

作者: 0月 | 来源:发表于2021-06-22 17:39 被阅读0次

在开发的过程中,偶尔发现刷新某个页面控制台报错了导致页面显示不出来,如下:


image.png

我一开始还以为是vue代码有问题,后来发现是我代码有问题,追踪执行栈之后,发现assertType这个方法是检查 传入的props是否符合自己定义的类型,就是下面这一行报错了中断代码继续执行,页面显示不出来


image.png

再看运行时这里为什么会报错,

valid = value instanceof type;

原来是 value = 2222, type = null ; 然后就报错了,如下图


image.png

找到问题,是某个id设置的props有问题

id: {
  type: [Number, null]
}

改为了

id : {
  type: [String, Number]
}

问题解决了,改好了让测试测一下。测试拿改之前的代码来测,说本来就没有问题啊。

我。。。

奇怪,我怎么发现问题,测试却没有复现问题?难道我想多了。于是我继续排查,终于给我看到下面这一行代码


image.png

一般没有人会这么写if(true)的,我反应过来了,应该是环境判断的问题,为了验证我的猜想,去源码找了一下,终于验证了我的猜想是对的 ,这里是vue源码位置

image.png

好家伙,怪不得测试没法复现问题。只有非生产环境才能复现。

最后,和测试解释了一下,测试也愉快的接受了这个改动。

相关文章

网友评论

      本文标题:页面刷新之后白屏,看了vue源码才知道原来是这样

      本文链接:https://www.haomeiwen.com/subject/zrrmyltx.html