我试图在我的路线中使用参数,并创建了下面的路线。
export const ConsumerRoutes = [
{
path: '/' + import.meta.env.VITE_MODULE_ADMIN_NAME + '/consumers',
meta: {
requiresAuth: true,
adminLayout: true,
module: 'admin',
icon: UserCircleIcon,
nav: 'Consumers'
},
children: [
{
path: '',
name: 'Consumers',
component: () => import('../../views/admin/Consumer.vue'),
},
{
path: ':id',
name: 'Consumer Details',
component: () => import('../../views/admin/ConsumerDetails.vue'),
}
],
},
// {
// path: '/' + import.meta.env.VITE_MODULE_ADMIN_NAME + '/consumers/:id',
// meta: {
// requiresAuth: true,
// adminLayout: true,
// module: 'admin',
// excludeFromNav: true
// },
// children: [
// {
// path: '',
// name: 'Consumer Details',
// component: () => import('../../views/admin/ConsumerDetails.vue'),
// }
// ]
// }
];
字符串
我可以导航到消费者,但只要我把/1的网址,我得到这个错误
vue-router.mjs:810 Uncaught (in promise) Error: No match for
{"name":"1","params":{}}
型
但是如果我在afterEach函数中console.log我的路由,我得到这个route object
所以它知道我试图去哪条路线,但由于某种原因,它正在使用'1'来尝试并找到一条名为'1'的路线。如果我将路由的名称更改为1,则加载正常。
我试过把我的路线从孩子们那里分开,成为单独的路线,但这并没有改变任何事情
解决了它,它与我定义的路线无关
2条答案
按热度按时间vojdkbi01#
您遇到的问题可能是由于Vue Router试图通过名称而不是路径来匹配路由。
您尝试导航到/consumers/1,打算将“1”作为路由参数(:id)。但是Vue Router将“1”解释为路由名称,因此您看到的错误消息。
请确保使用路由路径而不是路由名称进行导航。在afterEach钩子中,用途:
字符串
手动导航时,请使用路径('/consumers/1'),而不是名称。如果你仍然有问题,可能是由于你的代码的另一部分。
以下是如何通过路径名称导航到路径:
型
下面是如何通过路径导航到路线:
型
希望这对你有帮助!
ogq8wdun2#
字符串