无规律出现uncaught SyntaxError 排查思路?

无规律出现uncaught SyntaxError 排查思路?

uncaught SyntaxError: Unexpected token '<'

近期项目中遇到这个错误,按照经验一般是静态资源引用失败导致。但是!但是!!!

他的出现是随机的,不一定会在那个页面出现,也不一定那一次访问出现。

而且每次出现的时候,什么都不用做,只要刷新一下基本就没问题了。所以我猜测应该不是静态资源导致的问题。

通过在 router.beforeEach 加输出信息的办法也只是发现,每次报错都是在执行

next() 的时候爆出来的,而且报错后 router.afterEach 里的内容就不执行了。其他的什么都没发现。

目前卡在这里,有什么排查思路,遇到过相似问题的朋友指教一下。


回答:

你排查下是否每次发版之后就会出现这个问题?
出现问题这个原因是当前chunk模块缓存在浏览器,而他关联的下一个chunk因为重新打包发布hash已经不一样了,访问找不到该文件就重定向回来html
解决办法是采取 增量发布 的打包发布机制


回答:

错误不一定出现在那个页面,也不一定出现在那次请求,所以基本可以排除是某一个组件导致的原因。
每次都是在切换页面(准确的说是切换路由)的时候出现,大概率是在路由守卫的过程中引起的,
通过输出信息确认了这一点,就是在放行的时候执行 next() 报错。
虽然没找到 next() 为什么会无规律的引起这个错误。
但是至少找到出问题的地方了。可以先想办法规避,让工作先继续往下进行。
起初我尝试用try..catch 块,如果捕获到异常就重新执行next().
但是并不起作用,应该是try 无法捕获块内异步抛出的异常导致。
所以干脆就使用计时器,异步执行两次next(),零毫秒后执行一次,三千毫秒后执行一次。
问题解决。
虽然感觉这么解决有点二把刀,但是至少截至目前,运行稳定。
希望有更好解决方案的小伙伴能提供一下排查或解决思路。不胜感激。

以上是 无规律出现uncaught SyntaxError 排查思路? 的全部内容, 来源链接: utcz.com/p/933185.html

回到顶部