29

Created a simple Vue project using the CLI:

vue create my-project

Wanted to add two pages, so installed the latest version of vue-router (which is currently v3.4.8) and followed the vue mastery tutorial for routing.

This is what my router.js file looks like:

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

And of course, this is what my main.js file looks like:

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')

Both of the Home and About components don't really have much in them, this is what they look like:

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

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

Anyway, all of this to say that I am getting the following error on:

Uncaught TypeError: Object(...) is not a function

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

This is specifically on createRouter

Have I done something wrong?

Edit: as Boussadjra Brahim pointed out, originally createWebHistory was just being passed in without being a function call. I've since updated the code to include this.

Interestingly enough, once that was done, the error is not happening upon it's call.

3 Answers 3

68

This issue is caused when you install Vue router 3 with Vue 3 so you should uninstall the current version :

npm uninstall vue-router --save

and install the new one by :

npm i vue-router@next --save

Example

Sign up to request clarification or add additional context in comments.

6 Comments

I have a same problem, but this didn't help me :( Vue version: 3.0.2, "vue-router": "^4.0.0-0", "@vue/cli-plugin-router": "^4.5.8"
could you enrich this example? in order to debug it
Hmm.. there I get some CORS issues? (I just routing within the site). Here it is: codesandbox.io/s/friendly-colden-mtti2 , I added List and Detail
It work on me. my package.json "dependencies": { "core-js": "^3.6.5", "vue": "^3.0.0", "vue-router": "^4.0.12", "vuex": "^4.0.2" },
Keep up the good work
|
4

In my case it was the other way round (I was getting the same error), I had vue 2.6 installed and Vue Router 4, so I had to downgrade Vue Router to 3.5

Comments

3

For vue3 you should install the @4 package with the following command:

npm install vue-router@4

Please consult the following migration guide if you're having problems: Migrating from Vue 2

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.