Vue 本地运行没事, Build 之后运行发生页面卡死问题,找了一天了,没有查到问题

2020-11-19 11:29:06 +08:00
 Jmysy

演示地址: http://ant.pearadmin.com

源码位置: https://gitee.com/Jmysy/pear-admin-ant

本地运行没有问题,打包之后会有出现这个问题,也没有报错信息

4079 次点击
所在节点    问与答
33 条回复
yaphets666
2020-11-19 14:01:15 +08:00
@Jmysy 你看 gitee 吧 有人给你提 pr 了 你 beforeEach 没调 next()
Jmysy
2020-11-19 14:04:54 +08:00
@yaphets666 和此处关系不大, 合并测试过了
Jmysy
2020-11-19 14:15:19 +08:00
就这么一筹莫展吗 ...
SmallTeddy
2020-11-19 14:18:30 +08:00
这个很明显就是死循环了 刚刚打开 没点什么呢 页面就挂掉了
yaphets666
2020-11-19 14:24:24 +08:00
完了兄弟 traverse 这个函数是 vue3 的 apiWatch.ts 这个文件的 可能是 vue3 的 bug 吧
yaphets666
2020-11-19 14:30:30 +08:00
https://github.com/vuejs/vue-next/issues/2380 看下这个 issue 说应该就你的这个问题
mxT52CRuqR6o5
2020-11-19 14:43:51 +08:00
我这边看下来
header/index.vue 第 190 行
tab/index.vue 第 106 行
menu/index.vue 第 81 行
都注释掉,build 出来的页面切换路由就不会卡死了,看着像是 vue3 watch router 会有 bug
TomVista
2020-11-19 14:57:16 +08:00
Jmysy
2020-11-19 15:18:02 +08:00
刚刚被禁言了,因为回复频繁,大家可以到源码地址讨论,也可能和 watch router 的使用方式有关系,但是官方提供了 useRoute() userRouter() 如果源码正确,这样使用是没有问题的,如果说是递归卡死,在本地开发测试的时候就应该体现出来了,不会等到 build 之后
Jmysy
2020-11-19 15:21:38 +08:00
尝试使用 watch:{ $route: } 或 import router from "./router/index.js" 方式来替换现有的 useRoute() 与 useRouter() API
Jmysy
2020-11-19 15:34:13 +08:00
@mxT52CRuqR6o5 接受了你的建议,屏蔽了代码的确如此,现在就是去切换路由的使用方式,看目前哪种方式当前版本适配,useRoute() import router watch:{ $route } 等方式
sampeng
2020-11-19 19:00:41 +08:00
本地你是不是 localhost 这样去访问?如果是,换成域名…如果不是,看下一楼。一般 js 线上线下执行差异一般就是踩了浏览器在处理 localhost 和域名有不一样的逻辑…
Jmysy
2020-11-19 20:09:19 +08:00
多谢各位的帮助,@mxT52CRuqR6o5 老哥点到了我,目前 watch ( route ) 的方式是有问题的,目前更正为 watch( route.fullpath ) 的方式

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/727043

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX