vue项目开发过程中遇到的问题

前言

从0 开始开发一个vue项目,旨在记录开发中遇到的问题

1.全局安装Element UI

 https://element.eleme.cn/#/zh-CN/component/quickstart

npm i element-ui -S

main.js中

import ElementUI from 'element-ui';

import 'element-ui/lib/theme-chalk/index.css';

 

Vue.use(ElementUI);

2.报错:

 

报错原因:

  由于vue对语法的限制过于严格,所以第一次编译运行项目时会报错(如截图)

解决方法:

在build/webpack.base.conf.js文件中,注释或者删除掉:module->rules中有关eslint的规则

 

 

 

2.beforeEach狗子,next('/login')跳转时,无限循环导致Maximum call stack size exceeded的问题

 

代码如下:

 

 1 import router from './router'
 2 import { getToken } from '@/util/auth'
 3 
 4 router.beforeEach((to, from, next)=>{
 5     const hastoken = getToken('token')
 6  
 7     if(hastoken){
 8         if(to.path === '/login'){
 9            //token存在,并且要去的是登录页面 则重定向到首页(工作台)
10            next({ path: '/index' })
11         }else{
12             //token存在,要去的是登录页面以外的--访问的是其他路由
13             next()
14         }
15     }else{
16         //没有token 跳转到登录页
17         next('/login')
18     }
19 })

这段代码,咋一看符合逻辑,没有问题,但是忽略了一点导致Maximum call stack size exceeded的报错(如上方报错截图,陷入了死循环,最后导致栈溢出。

后来发现是因为没有排除当前地址,就是/login地址,导致了循环调用

所以修改代码为:

 1 import router from './router'
 2 import { getToken } from '@/util/auth'
 3 
 4 router.beforeEach((to, from, next)=>{
 5     const hastoken = getToken('token')
 6  
 7     if(hastoken){
 8         if(to.path === '/login'){
 9            //token存在,并且要去的是登录页面 则重定向到首页(工作台)
10            next({ path: '/index' })
11         }else{
12             //token存在,要去的是登录页面以外的--访问的是其他路由
13             next()
14         }
15     }else{
16         //没有token 跳转到登录页
17        if(to.path === '/login'){
18            //排除登录页  避免死循环存在
19            next();
20        }else{
21         next('/login')
22        }
23     }
24 })

 

posted @ 2020-04-08 17:59  小玲慕斯  阅读(452)  评论(0编辑  收藏  举报