使用CLI创建了一个简单的Vue项目:

vue创建我的项目

想要添加两个页面,所以安装了最新版本的vue路由(目前是v3.4.8),并遵循vue mastery tutorial for routing.

这就是我的路由.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

当然,这是我的主要观点.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>

总之,所有这些都表明我在以下方面有错误:

未捕获类型错误:对象(…)这不是一个函数

判断时(router.js?41cb:5)

这是专门针对createRouter

我做错什么了吗?

编辑:正如Boussadjra Brahim指出的,最初的createWebHistory只是被传入,而不是函数调用.此后,我更新了代码,将其包括在内.

有趣的是,一旦这样做了,错误就不会发生在它的调用上.

推荐答案

此问题是在使用Vue 3安装Vue router 3时引起的,因此应卸载当前版本:

npm uninstall vue-router --save

并通过以下方式安装新的:

npm i vue-router@next --save

Example

Vue.js相关问答推荐

为什么在 Vue2 中调用 this.$emit() 后 props 没有立即更新?

从组件中检索 Shopware CMS 编辑器中的自定义实体数据

单击 v-data-table 中行中的任意位置并移动到另一个页面

使用 Nuxt 动态获取文件夹中的图像路径

如何在map中添加新的标记 onclick?

Vuejs中的条件a href

Vue3在'vue-router'中找不到导出'createWebHistory,createRouter'

Vue-Router 抽象父路由

更新 v-for 中使用的数组内的对象时,Vue js react性问题

vuex: unknown getter: user

如何从 vue.js 中的自定义组件中冒泡点击事件?

SVG 加载 vue-svg-loader; [Vue 警告]:无效的组件定义

store 的 Vuex Classic 模式已弃用,将在 Nuxt 3 中删除

如何在 Vue.js 3 中使用 Vue 3 Meta?

Vuetify v-btn 路由活动类问题

这是 v-on:change 的正确用法吗?

我应该将所有数据存储在 vuex 状态

VueJS错误避免直接改变props

在 VueJS 中使用 Axios - 这个未定义

如何使用 Vuetify 验证复选框组