$router' of undefined 是什么原因?

发布于 2022-09-11 17:58:11 字数 910 浏览 9 评论 0

有一个需求:
后端返回状态码-999表示token过期,前端要跳到登录页。

我的代码:
http.js

    import axios from 'axios'
    import Vue from "vue"
    import VueRouter from 'vue-router'
    import { Message } from "element-ui";
    import common from './global.js'
    Vue.use(VueRouter)
    
axios.interceptors.response.use(
    response => {
        //token过期处理
        if(response.data.code == -999){
            Message({
                message: '身份已过期,请重新登录!',
                type: 'warning'
            });
            this.$router.push('/login');
            this.common.delCookie('token');
            this.common.delLocal();
        }
        return response;
    },
    error => {
        Message({
            message: '服务器响应失败',
            type: 'warning'
        });
        return Promise.reject(error.response.data)
});

提示了一句“Cannot read property '$router' of undefined”

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

瑕疵 2022-09-18 17:58:12

你的this指向谁的呢

内心荒芜 2022-09-18 17:58:12

用axios的方法会改变this指向,用axios方法前,缓存this指针

无语# 2022-09-18 17:58:12

js文件中this不是指向 new Vue() 的呀,.vue 文件中才指向 Vue 实例

属性 2022-09-18 17:58:12

this里面没$router 这个属性

顾北清歌寒 2022-09-18 17:58:11
import router from '@/router';
...
router.push('/login');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文