TypeError:e不是函数

时间:2019-07-15 22:41:53

标签: vue.js vue-router

美好的一天。

运行我的应用程序时,出现以下与我的vue-router:相关的错误

  

TypeError:e不是函数

但是我什么都没有...我在代码中简单地命名为“ e”。

每个选项之前我都有一些,但除了删除一些cookie之外,没有什么太大的内容。

我有一些进口的应用程序,我正在尝试在路由器中使用它们,并且它们都能正常工作。 Cookies也是如此。我做了几次beforeEach()方法,看是否有错误,但到目前为止还算不上运气。

我不知道发生了什么。

编辑:当试图弄清楚这一点时,我正在对我的代码进行评论,以查看是否可以找到该错误,并且当我删除了beforeEach()函数中剩下的大部分next()部分和一个新的错误显示为“ t不是函数”,所以我猜测由于某种原因Java脚本只能识别我函数的最后一个字母,例如next()中的t和some()中的e。

EDIT2:在删除了我从另一个项目复制过来的不必要的代码之后,该错误发生在我的next()函数中。

这是我的路由器代码:

import Vue from "vue";
import Router from "vue-router";
import Dashboard from "@/views/Dashboard.vue";
import Opcoes from "@/views/settings.vue";
import LoginForm from "@/components/component/loginForm.vue";
import store from "./store.js";
import Cookies from "js-cookie";

Vue.use(Router);

let router = new Router({
  mode: "history",
  base: process.env.BASE_URL,
  routes: [
    {
      path: "/",
      name: "loginForm",
      component: LoginForm,
      meta: {
        guest: true
      }
    },
    {
      path: "/dashboard",
      name: "Dashboard",
      component: Dashboard,
      meta: {
        requiresAuth: true
      }
    },
    {
      path: "/opcoes",
      name: "Opcoes",
      component: Opcoes,
      meta: {
        requiresAuth: true
      }
    },
    {
      path: "/sair",
      name: "Sair",
      component: LoginForm,
      meta: {
        requiresAuth: true
      }
    }
  ]
});

router.beforeEach((to, from, next) => {


 const expirationDate = Cookies.get("expireIn");
  const now = new Date().getTime();

  if (now >= expirationDate) {
    Cookies.remove("expirationDate");
    Cookies.remove("token");
    Cookies.remove("userId");
    store.dispatch('LOGOUT');
  } else {
    next();
  }
});

export default router;

在这里打印我的堆栈跟踪记录:

enter image description here

1 个答案:

答案 0 :(得分:0)

我的大胖猜想

错误消息指向第2203行(第1921行是通用错误处理程序的一部分)。此行在Router result-view { match: Pet (pet) render{ layout{ section{ content{ hbox{ content{ vbox{ content{ text{ value ("#{upper(pet.name)}") style (Title_S) } } } if (pet.species == 'dog'){ vbox{ content{ single-line{ image{ shape (Circle) style (Title_S) url ("/icons/dog-icon.png") } } } } } else-if (pet.species == 'cat') { vbox{ content{ single-line{ image{ shape (Circle) style (Title_S) url ("/icons/cat-icon.png") } } } } } } } } } } } } 方法中

push()

我的猜测是,在代码中未显示在问题中的某个地方(可能在您的onComplete && onComplete(route); 组件中),您正在调用LoginForm并带有第二个 not 参数。一个功能,例如

this.$router.push()

其他问题(来自该问题的先前版本)

您的this.$router.push({ name: 'Dashboard' }, somethingNotAFunction) 路由( loginForm )没有参数,因此这...

/

无效。您是否打算发送next({ path: "/", params: { nextUrl: to.fullPath } }); 作为查询参数。如果是这样,请使用

nextUrl

您也有

next({ name: 'loginForm', query: { nextUrl: to.fullPath } })

next({ path: "login" });

您的路线中都不存在。您只应将路线请求转发到现有路线。


最后,如果您使用的是Vuex,则不应直接分配状态值。在strict-mode中,此

next({ name: "login" });

将触发错误。您应该改为提交状态突变。