在使用若依的后台管理系统时,导航栏的路由无法点击,路由加载不出来,开始在谷歌当中调试发现没有报错,但是在network 当中也没有发送任何请求,所以应该是vue前端的问题。打开firefox当中显示错误,路由导航失败,通过百度查找知道在google当中没有报错可能是因为谷歌当中安装的插件冲突导致的,并且控制台也有输出内容
DevTools未能加载源映射:无法加载chrome的内容-extension://ncennffkjdiamlpmcbajkmaiiiddgioo/js/xl-content.js.map:HTTP错误:状态代码404,net::ERR_UNKNOWN_URL_SCHEME
将google当中的插件卸载以后成功出现错误
同时根据报错信息找到大概报错位置 at permission.js:73:1点击进入
在系统中找到对应文件 src/store/modules/permission.js 根据注解可以找到对应的编译前文件为
搜索发现由于是 webpack 版本问题,webpack4 不支持变量方式的动态 import ,新版本的使用 require() 来解决此问题。查看当前webpack版本是否为4
将代码改写一下即可
return (resolve) => require([`@/views/${view}`], resolve)
重启项目
另外 google当中还有一个提示
[Violation] Added non-passive event listener to a scroll-blocking 'mousewheel' event. Consider marking event handler as 'passive' to make the page more responsive. See https://www.chromestatus.com/feature/5745543795965952
翻译如下:
违反:没有添加被动事件监听器来阻止’touchstart’事件,请考虑添加事件管理者’passive’,以使页面更加流畅。
原因是 Chrome51 版本以后,Chrome 增加了新的事件捕获机制-Passive Event Listeners;
Passive Event Listeners:就是告诉前页面内的事件监听器内部是否会调用preventDefault函数来阻止事件的默认行为,以便浏览器根据这个信息更好地做出决策来优化页面性能。当属性passive的值为true的时候,代表该监听器内部不会调用preventDefault函数来阻止默认滑动行为,Chrome浏览器称这类型的监听器为被动(passive)监听器。目前Chrome主要利用该特性来优化页面的滑动性能,所以Passive Event Listeners特性当前仅支持mousewheel/touch相关事件。
解决方法 安装 default-passive-events
1.npm i default-passive-events -S
2.main.js中加入:import 'default-passive-events'