vue vue-router模块化问题

想把vue-router独立成一个模块的时候报错

先放正常的代码main.js

import App from './App'

// import router from './router'
import Vue from 'vue'
import VueRouter from 'vue-router'
const Foo = { template: '<div>foo</div>' }
const Bar = { template: '<div>bar</div>' }

const routes = [
  { path: '/foo', component: Foo },
  { path: '/bar', component: Bar }
]

var router = new VueRouter({
    routes: routes
});

Vue.use(VueRouter)

new Vue({
    el: '#app',
    template: '<App/>',
    components: { App },
    router: router
})

然后把vue-router部分的代码独立到router.js中,然后在main.js中导入,报错。以下是router.js

import Vue from 'vue'
import VueRouter from 'vue-router'
const Foo = { template: '<div>foo</div>' }
const Bar = { template: '<div>bar</div>' }

const routes = [
  { path: '/foo', component: Foo },
  { path: '/bar', component: Bar }
]

var router = new VueRouter({
    routes: routes
});

export {
    router
}

main.js

import App from './App'

import router from './router'

Vue.use(VueRouter)

new Vue({
    el: '#app',
    template: '<App/>',
    components: { App },
    router: router
})

报错信息

[Vue warn]: Error when rendering component <hello> at G:\Clouds\vw\CloudCity\src\components\Hello.vue: warn @ vue.common.js?e881:521
vue.common.js?e881:3098 Uncaught TypeError: Cannot read property 'path' of undefined

页面中$route.path为undefined

阅读 9.3k
6 个回答

import {router} from './router'

Vue.use(VueRouter) // 写到router.js  先use再 new VueRouter()
import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter) 

const Foo = { template: '<div>foo</div>' }
const Bar = { template: '<div>bar</div>' }

const routes = [
  { path: '/foo', component: Foo },
  { path: '/bar', component: Bar }
]

var router = new VueRouter({
    routes: routes
});

export {
    router
}
新手上路,请多包涵

main.js 必须这样渲染
import App from './App'
import router from './router'
Vue.use(VueRouter)
new Vue({

el: '#app',
router: router,
render:h=>h(App)

})

# router.js
import Vue from 'vue'
import Router from 'vue-router'
import { sync } from 'vuex-router-sync'

import Vuex from '@/vuex'

Vue.use(Router)

const router = new Router({
    routes: []
})

router.beforeEach((to, from, next) => {})
router.afterEach(() => {})

sync(Vuex, router)

export default router
# main.js
import Vue from 'vue'

import Router from '@/router'
import Vuex from '@/vuex'

new Vue({
    router: Router,
    store: Vuex
}).$mount('#app')
新手上路,请多包涵

main.js多写了一行:

Vue.use(VueRouter)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题