美好的一天。
运行我的应用程序时,出现以下与我的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;
在这里打印我的堆栈跟踪记录:
答案 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" });
将触发错误。您应该改为提交状态突变。