如何使用 vuejs 3 将路由器添加到 @vue/cli 应用程序?

Pet*_*ovo 2 vue-cli vuejs3

学习 vuejs3 我用命令创建了新的 @vue/cli 应用程序

vue create myapp
Run Code Online (Sandbox Code Playgroud)

选择 vuejs 3 后,我将 Router 添加到我的项目中,并在我的 src/main.js 中添加了 Router 引用:

import { createApp } from 'vue'

import { createRouter/*, createWebHistory */ } from 'vue-router'
import WelcomeScreen from './pages/WelcomeScreen.vue'
import UsersList from './pages/UsersList.vue'

import App from './App.vue'

const router = createRouter({
  // history: createWebHistory(),
  mode: 'history',
  routes: [
    { path: '/', component: WelcomeScreen },
    { path: '/users', component: UsersList }
  ]
})
const app = createApp(App)
app.use(router)

app.mount('#app')
Run Code Online (Sandbox Code Playgroud)

但在控制台中我看到警告:

"export 'createRouter' was not found in 'vue-router'
Run Code Online (Sandbox Code Playgroud)

和错误:

main.js?56d7:10 Uncaught TypeError: Object(...) is not a function
Run Code Online (Sandbox Code Playgroud)

在我的 package.json 我有:

  "dependencies": {
    "core-js": "^3.6.5",
    "mitt": "^2.1.0",
    "vue": "^3.0.0",
    "vue-router": "^3.4.8"
  },
Run Code Online (Sandbox Code Playgroud)

$ vue --version
@vue/cli 4.5.8
Run Code Online (Sandbox Code Playgroud)

哪种方式有效?还有一些@vue/cli的vuejs3教程吗?我找到了一些 vuejs 3 教程,但不是针对 @vue/cli 的,这引起了一些混乱...

在我的@vue/cli 和 vue2 中说我使用文件 src/router/index.js,但我不记得我是否手动创建了...

谢谢!

小智 7

你需要像这样为vue3安装 vue-router :

npm install vue-router@next --save
Run Code Online (Sandbox Code Playgroud)

路由器.js

import { createApp } from 'vue'
import App from './App.vue'
    import { createRouter, createWebHistory } from "vue-router"
    const routeInfos = [
        {
            path : "/",
            component : HomePage
        },
        {
            path : "/favorites",
            component : FavoritesPage
        }
    ]
    
    const router = createRouter({
        history : createWebHistory(),
        routes : routeInfos
    })
    
    export default router;
Run Code Online (Sandbox Code Playgroud)

在 Main.js 中导入

import router from "./router"
createApp(App).use(router).mount('#app')
Run Code Online (Sandbox Code Playgroud)