生产环境,vue页面跳转的时候,js报404的问题

探讨Vue项目中,懒加载机制导致的iOS设备上js文件404问题及解决方案。懒加载机制下,更新代码时,由于浏览器缓存旧js路径而服务器已更新文件名,造成跳转时404错误。解决方法包括抓取跳转错误并手动刷新。

最近上线的一个vue项目,需要各种路由跳转,在开发和测试环境都没问题,但是在生产环境,发现后期更新代码的时候,有些机型(ios机型,暂未发现android有问题)跳转路由的时候,标题修改了,但是内容并没有显示。抓包后,发现跳转的时候,js文件报404。

在查阅资料后,找到了原因。因为怕影响首屏的加载速度,所以使用vue-router的懒加载机制,当用户刷新页面时,防止webpack打包后的js被缓存,会加一个哈希值,因此每次修改,会重新生成js文件名。但是用户大部分没有关机的习惯,因此更新代码后,手机本地浏览器缓存之前js文件的路径,但是远程服务器的js文件名已经修改成了新的文件名,旧的文件不再存在,因此跳转的时候请求的js文件就会出现404错误。

解决方案:

1)可以抓取路由的跳转错误,然后跳转另一个地址,再跳转回原页面,实现手动刷新。

  component: ()=>import("./home.vue").catch(err)

注意:在自动刷新的时候,不能使用 window.location.reload() 刷新。因为当浏览器抛出载入页面错误的时候,地址栏还没有更新地址。如果你利用给 window.location.href 赋值的方式刷新页面,那么这个地址会被前端路由拦截到。所以有效的办法是让浏览器先跳转到另外一个域名,再跳转回来。

转载于:https://www.cnblogs.com/xuheheda/p/10678725.html

### 解决 Vue 项目中页面跳转出现 404问题Vue 项目开发过程中,遇到页面跳转至未定义路径而触发 404 错误的情况较为普遍。为了有效应对这一挑战,需关注路由配置细节以及确保所有自定义路由规则被正确加载。 #### 动态路由注册顺序的重要性 当应用涉及动态添加新路由时,务必注意这些新增加的路由应当按照特定次序加入到路由器实例之中。特别是对于通配符形式存在的错误捕获路由(即通常所说的 `*` 或者 `/404`),这类特殊路由应该始终位于整个路由表的最后一项位置[^1]: ```javascript const router = new VueRouter({ routes: [ // 正常业务逻辑相关联的具体路由条目... // 将匹配任何未找到对应路由请求并导向至指定404视图组件 { path: '*', component: NotFoundComponent } ] }); ``` #### 编程式导航中的异常处理机制优化 针对编程方式发起的页面切换操作可能引发未经预料的情形,比如网络状况不佳或者目标地址拼写失误等原因造成的失败情况。为此,在执行此类动作前可以考虑预先保存原生方法副本,并对其进行扩展以便更好地捕捉潜在发生的异常事件[^4]: ```javascript // 备份原有的push函数行为 const originalPush = VueRouter.prototype.push; // 扩展后的版本能够自动忽略某些类型的拒绝情形 VueRouter.prototype.push = function push(location) { return originalPush.call(this, location).catch(err => { if (err.name !== 'NavigationDuplicated') throw err; }); }; ``` 通过上述措施可以在一定程度上减少因不当设置所引起的不必要的404响应次数,提高用户体验质量的同时也降低了维护成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值