位置:- 正文

Uncaught SyntaxError: Unexpected token '<' (at 报错

编辑:rootadmin
一 发新版本导致 问题的根源是服务器js文件更新了,页面还在请求以前的js文件。可以保留之前webpack打包的文件,但是时间久了文件体积会积累到很大,而且从产品角度更希望用户访问新的资源。所以最好的解决方式是在报错时给用户提示,用户点击确认后刷新页面。前端如何能catch到这种错误? 目前还没找到 ...

推荐整理分享Uncaught SyntaxError: Unexpected token '<' (at 报错,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

Uncaught SyntaxError: Unexpected token '<' (at  报错

一 发新版本导致

问题的根源是服务器js文件更新了,页面还在请求以前的js文件。可以保留之前webpack打包的文件,但是时间久了文件体积会积累到很大,而且从产品角度更希望用户访问新的资源。所以最好的解决方式是在报错时给用户提示,用户点击确认后刷新页面。前端如何能catch到这种错误?

目前还没找到catch这种错误的方法,但是,可以模拟这种错误的出现。

js文件是以script标签的形式动态添加到head标签里的,可以给head绑定DOMNodeInserted这个事件在有子元素插入的时候触发,可以在回调里拿到插入的标签名以及标签的属性包括src。这样在所有js资源加载时我们都可以在回调事件里拿到资源路径,然后在创建一个请求去请求该资源,代码如下:

const head = document.getElementsByTagName('head')[0] head.addEventListener('DOMNodeInserted', e => { // 获取标签名 const type = e.target.tagName // 获取资源路径 const url = e.target.src if (type === 'SCRIPT' && url) { // 创建请求,如果需要低版本浏览器兼容的,请注意 let xhr = new XMLHttpRequest() xhr.open('get', url) xhr.onload = () => { const text = xhr.responseText if (text.indexOf('<') === 0) { this.$modal.info({ title: '检测到有新的版本发布,需要刷新页面以访问最新内容', width: 350, okText: '确定', onOk() { location.reload() } }) } } xhr.send() } })
本文链接地址:https://www.jiuchutong.com/zhishi/304617.html 转载请保留说明!
下一篇链接:https://www.jiuchutong.com/zhishi/304618.html
免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络