我不能使用 Vue.use 来使用 VueRouter

Posted

技术标签:

【中文标题】我不能使用 Vue.use 来使用 VueRouter【英文标题】:I can't use Vue.use to use VueRouter 【发布时间】:2021-10-16 20:58:17 【问题描述】:

我有一个 vue js 的问题,我想使用 VueRouter 来链接 2 个 vue 组件,但我似乎有一个 Vue.use 的问题,我有这个错误:

我不认为问题出在 VueRouter 而是更多关于 vue 导入的问题我现在有点迷路了

//This is my app.js

import Welcome from "./Jetstream/Welcome";

require('./bootstrap');
window.Vue = require('vue');
console.log(window.vue)

// Import modules...
import  createApp, h  from 'vue';
import Vue from 'vue'
import  App as InertiaApp, plugin as InertiaPlugin  from '@inertiajs/inertia-vue3';
import  InertiaProgress  from '@inertiajs/progress';
import Router from 'vue-router'

Vue.use(Router)

const router = new VueRouter(
    mode: 'history',
    routes:
        
            path: '/student',
            name: 'student',
            component: Welcome
        ,

);

const el = document.getElementById('app');

createApp(
    render: () =>
        h(InertiaApp, 
            initialPage: JSON.parse(el.dataset.page),
            resolveComponent: (name) => require(`./Pages/$name`).default,
        ),
)
    .mixin( methods:  route  )
    .use(InertiaPlugin)
    .mount(el);
InertiaProgress.init( color: '#4B5563' );
<template>
<div>Hello</div>
<!-- this is My vue component-->
<!-- i try use a simple method-->
    <a class="btn btn-primary" @click="truc"> Test</a>
<!--And this is what I swa on the documentation-->
    <router-link :to="name: 'student'">Student</router-link>

    <div>
        <router-view></router-view>
    </div>

</template>

<script>


export default 
    name: "Session.vue",

    methods:
        truc()
            this.$router.push('/student')
        
    



</script>

如果您需要更多内容,请告诉我,感谢您的帮助


"private": true,
"scripts": 
    "dev": "npm run development",
    "development": "mix",
    "watch": "mix watch",
    "watch-poll": "mix watch -- --watch-options-poll=1000",
    "hot": "mix watch --hot",
    "prod": "npm run production",
    "production": "mix --production"
,
"devDependencies": 
    "@inertiajs/inertia": "^0.9.1",
    "@inertiajs/inertia-vue3": "^0.4.2",
    "@inertiajs/progress": "^0.2.5",
    "@tailwindcss/forms": "^0.2.1",
    "@tailwindcss/typography": "^0.3.0",
    "@vue/compiler-sfc": "^3.0.5",
    "axios": "^0.21.1",
    "laravel-mix": "^6.0.6",
    "lodash": "^4.17.19",
    "postcss": "^8.1.14",
    "postcss-import": "^12.0.1",
    "tailwindcss": "^2.2.4",
    "vue": "^3.1.5",
    "vue-loader": "^16.1.2"
,
"dependencies": 
    "bootstrap": "^5.0.2",
    "bootstrap-icons": "^1.5.0",
    "bootstrap-vue": "^2.21.2",
    "vform": "^2.1.0",
    "vue-i18n": "^8.24.5"

这是我的 package.json

但我的依赖项中有这个:

我的 app.js 现在是这样的:

【问题讨论】:

从 vue 中删除导入 vue 并仅利用 window.Vue。 @Cameron 我已经试过了,同样的错误 你的 package.json 是什么样的? 你还在 laravel mix 中使用 .vue() 方法吗? mix.js('src/app.js', 'dist').vue(); @Cameron 我编辑了我的帖子 【参考方案1】:

我认为您使用的是 Vue 3,而不是 Vue 2。因此,您应该将 createApp(...) 分配给一个变量

let app = createApp(...)

你还需要这样做:

import createRouter from 'vue-router'

和设置:

const router = createRouter(...)

那你就做

app.use(router)

在文档中查看它的外观:

https://next.router.vuejs.org/guide/#javascript

【讨论】:

这里是从 vue2 到 vue3 的重大更改的链接,例如 vue-router v2 到 v4 next.router.vuejs.org/guide/migration 我的 app.js 文件中有一个“无法解析 'vue-router',它无法编译 @Szymon Pawlus 但是 app.use 似乎可以工作,只是 vue-router 的问题 在 package.json 的依赖项中似乎没有 vue-router。 npm i vue-router @SzymonPawlus 他在我的 package.json 中,但是版本是黄色的,当我把鼠标放在上面时我没有任何信息,我会更新我的帖子让你看到它

以上是关于我不能使用 Vue.use 来使用 VueRouter的主要内容,如果未能解决你的问题,请参考以下文章

[转] vue自定义组件(通过Vue.use()来使用)即install的使用

Vue 2 Laravel 5.3 Vue-router 2 设置 Vue-router 的正确方法

vue插件开发与发布

自定义vue全局组件use使用(解释vue.use()的原理)

自定义vue全局组件use使用vuex的使用

vue中自定义组件(插件)