Маршрутизатор Vue с Vue 3 вызывает ошибку Uncaught TypeError: Object () не является функцией

Создал простой проект Vue с помощью CLI:

vue создать мой проект

Хотел добавить две страницы, поэтому установил последнюю версию vue-router (в настоящее время v3.4.8) и следовал руководство по маршрутизации vue.

Вот как выглядит мой файл router.js:

import { createWebHistory, createRouter } from 'vue-router'
import Home from './components/Home.vue'
import About from './components/About.vue'

const router = createRouter({
  history: createWebHistory(),
  routes: [
    { path: '/', name: 'Home', component: Home },
    { path: '/about', name: 'About', component: About },
  ]
})

export default router

И, конечно же, вот как выглядит мой файл main.js:

import { createApp } from 'vue'
import router from './router'

createApp({
  template: `
  <div>
    <router-link to='/'>Home</router-link>
    <router-link to='/create'>Create</router-link>
  </div>
  `
})
.use(router)
.mount('#app')

В обоих компонентах Home и About нет ничего особенного, вот как они выглядят:

<template>
  <div>TODO: Home</div>
</template>

<script>
  export default {
    name: 'Home'
  }
</script>

В любом случае, все это говорит о том, что я получаю следующую ошибку:

Uncaught TypeError: Object (...) не является функцией

в eval (router.js? 41cb: 5)

Это конкретно на createRouter

Я сделал что-то не так?

Изменить: как указал Буссаджра Брахим, изначально createWebHistory просто передавался без вызова функции. С тех пор я обновил код, чтобы включить это.

Достаточно интересно, что как только это было сделано, ошибка не возникает при его вызове.


person theJuls    schedule 28.10.2020    source источник


Ответы (2)


Эта проблема возникает при установке Vue router 3 с Vue 3, поэтому вам следует удалить текущую версию:

npm uninstall vue-router --save

и установите новый:

npm i vue-router@next --save

Пример

person Boussadjra Brahim    schedule 28.10.2020
comment
У меня такая же проблема, но мне это не помогло :( Версия Vue: 3.0.2, vue-router: ^ 4.0.0-0, @ vue / cli-plugin-router: ^ 4.5.8 - person Dalibor; 12.11.2020
comment
не могли бы вы дополнить этот пример? чтобы отладить это - person Boussadjra Brahim; 12.11.2020
comment
Хм .. у меня проблемы с CORS? (Я просто роутинг внутри сайта). Вот он: codesandbox.io/s/friendly-colden-mtti2, я добавил Список и детали - person Dalibor; 12.11.2020
comment
У меня это не работает. Если вы нажмете здесь любую ссылку на странице списка, я получу ошибку CORS в FF или отсутствие ошибок в Chrome, но мертвая ссылка. В моей локальной системе у меня такая же ошибка, как у OP в заголовке этой страницы. Я пробовал то, что вы предлагали, но все равно ничего. - person Dalibor; 12.11.2020

Для vue3 вы должны установить пакет @ 4 с помощью следующей команды:

npm install vue-router@4

Если у вас возникли проблемы, обратитесь к следующему руководству по миграции:

https://next.router.vuejs.org/guide/migration/

person Jubei    schedule 21.02.2021