使用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相关问答推荐

Nuxt3 Build . put文件夹保持空,没有从.nuxt复制任何内容

如何将模板传递给EJS菜单

Svelte 中的简单react 性实验以意想不到的方式失败了. Vue 等效项没有

何时将代码拆分为 Nuxt 中的组件?

Vue,Composition API:如何从react 式转换中跳过深度嵌套的属性?

将 Vue 应用程序挂载到主 Vue 应用程序的容器中

如何将 vuejs 项目部署到 heroku

Vue index.html favicon 问题

如何在 Vue 中编译从外部 api 加载的模板

Vue:需要禁用页面上的所有输入

Vuejs 2,VUEX,编辑数据时的数据绑定

将 props 传递给 Vue 组件中的元素属性

ionic - `slot` 属性已被弃用 - eslint-plugin-vue

Vuejs:我应该在 vue-router SPA 中的哪里放置一些常用的 js 工具?

如何在 Vue 中动态创建组件上获取更新的 $refs?

VueJS 通过渲染传递数据

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

如何通过 Axios 发送文件到 Laravel

Vue cli 在 css 中构建生产更改不透明度

Vuex 模块Mutations