前端vue问题:[vue-router] "path" is required in a route configuration

前端页面的home页面中的菜单栏要和后端中的menu-controller自动匹配,跟着视频配置好以后报vue-router path错误,不知道该怎么改了,麻烦指点一下,非常感谢!

这个是前端控制台的报错:

img

//menus.js
export const initMenu = (router, store) => {
    if (store.state.routes.length > 0) {
        return;
    }
    getRequest('/system/config/menu').then(data => {
        if (data) {
            //格式化好的router
            let fmtRoutes = formatRoutes(data);
            //添加到路由
            router.addRoute(fmtRoutes);
            //将数据存入vuex
            store.commit('initRoutes', fmtRoutes);
        }
    })
}

export const formatRoutes = (routes) => {
    let fmtRoutes = [];
    routes.forEach(router => {
        let {
            path,
            component,
            name,
            iconCls,
            children,
        } = router;
        if (children && children instanceof Array) {
            //递归
            children=formatRoutes(children);
        }
        let fmtRouter = {
            path: path,
            name: name,
            iconCls: iconCls,
            children: children,
            component(resolve) {
                if(component.startsWith('Emp')) {
                    require(['../views/emp/' + component + '.vue'], resolve);
                }else if (component.startsWith('Per')){
                    require(['../views/per/' + component + '.vue'], resolve);
                }else if (component.startsWith('Sal')){
                    require(['../views/sal/' + component + '.vue'], resolve);
                }else if (component.startsWith('Sta')){
                    require(['../views/sta/' + component + '.vue'], resolve);
                }else if (component.startsWith('Sys')){
                    require(['../views/sys/' + component + '.vue'], resolve);
                }
            }
        }
        fmtRoutes.push(fmtRouter);
    });
    return fmtRoutes;
}

//router下的index.js
Vue.use(VueRouter)

const routes = [
    {
        path: '/',
        name: 'Login',
        component: Login,
        hidden: true
    },
    {
       //是不是这里得改一下?
        path: '/home',
        name: 'Home',
        component: Home,
        children: [
            {
                path: '/test1',
                name: '选项1',
                component: Test1
            }, {
                path: '/test2',
                name: '选项2',
                component: Test2
            }
        ]
    }
]

const router = new VueRouter({
    routes
})

export default router

<--这个是Home.vue-->
<template>
  <div>
    <el-container>
      <el-header>Header</el-header>
      <el-container>
        <el-aside width="200px">
          <el-menu router>
            <el-submenu index="1" v-for="(item,index) in routes"
                        :key="index"
                        v-if="!item.hidden">
              <template slot="title">
                <i class="el-icon-location"></i>
                <span>{{ item.name }}</span>
              </template>
              <el-menu-item :index="children.path" v-for="(children,indexj) in item.children">
                {{children.name}}
              </el-menu-item>

            </el-submenu>
          </el-menu>
        </el-aside>
        <el-main>
          <router-view/>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>

<script>
export default {
  name: "Home",
  computed:{
    routes(){
      return this.$store.state.routes;
    }
  }

}
</script>

<style>


</style>


//store文件夹中的index.js
import Vue from "vue";
import Vuex from 'vuex'

Vue.use(Vuex);

export default new Vuex.Store({
    state: {
        routes: []
    },

    mutations:{
        initRoutes(state,data){
            state.routes = data;
        }
    },
    actions:{}
})

解决了吗

我也是一样的问题,找了半天都没解决

这是云E办项目的一个前端问题。我的解决了,莫名就好了

component正确的写法为:

component: () => import ('@/views/own-space/own-space.vue')