#vue-router #vuejs3
Вопрос:
Пытаюсь добавить языковой префикс к URL-адресу с помощью vue-маршрутизатора, но он повторяет ошибку с сообщением : Uncaught Error: Missing required param "locale"
Я пытаюсь добавить маршруты, поддерживающие языковые префиксы, такие как en, de, nl, fr и так далее…
Я вижу, что использую дочерние маршруты, которые мне на самом деле не нужны, я думаю…!
example.com/en/users
example.com/nl/users
example.com/fr/users
routes.js
const routes = [
{
path: "/",
redirect: 'en'
},
{
path: '/:locale',
//path: '/:locale?', // this will work but it wont render the component
name:'locale',
component: {
template: '<router-view />'
},
children:[
{ path: 'welcome', name: 'dashboard', component: page('Dashboard.vue'),
},
{ path: 'users/index', name: 'users.index', component: page('Users/Index.vue'),
children:[
{ path: 'create', name: 'users.create', component: page('Users/Create.vue') }
]
},
]
},
]
router.js
const router = createRouter({
history: createWebHistory(),
routes,
base: process.env.BASE_URL,
});
router.beforeEach((to, from, next) => {
next();
})
Комментарии:
1. как насчет
path: ':locale',
2. Неперехваченная ошибка: Пути маршрута должны начинаться с «/»: «:языковой стандарт?» должно быть «/:языковой стандарт?».
Ответ №1:
Вы можете получить эту ошибку в Vue 3, если в вашем компоненте есть <router-link>
параметры, в которых отсутствует параметр локали.
Например, если появится такая разметка DOM, как эта:
<router-link :to="{ name: 'dashboard' }">
Dashboard
</router-link>
измените его на:
<router-link :to="{ name: 'dashboard', params: { locale: 'en' } }">
Dashboard
</router-link>
Ошибка может быть вызвана любым компонентом, который пытается загрузить. Например, у вас может быть TopNavBar.vue
компонент, который отображается вместе с вашим предполагаемым компонентом, поэтому проверьте это.