vite import.meta.glob('./modules/**/*.ts', { eager: true }) 处理?

 

问题描述:

import.meta.globEager 被遗弃了,,不想用了。
image.png

// 加入到路由集合中
Object.keys(modules).forEach((key) => {
  const mod = modules[key].default || {};
  const modList = Array.isArray(mod) ? [...mod] : [mod];
  routeModuleList.push(...modList);
});

之前使用这个处理的,现在不用了。
改为import.meta.glob

module/admin.ts

import { RouteRecordRaw } from 'vue-router';

export const adminRouter: Array<RouteRecordRaw> = [
    {
        path: "/",
        name: "home",
        meta: {
            title: "首页",
        },
        component: () => import("@/views/dashboard/index.vue"),
    },
]

base.ts

import { RouteRecordRaw } from 'vue-router';
const routeModuleList: any = [];

const modules = import.meta.glob('./modules/**/*.ts', { eager: true });

base.ts 里的modules 怎么处理?

打印出来
image.png

这个格式按照vite官网里处理不了啊。
蛋疼啊。


 

第 1 个答案:

官方给的不好使,既然是symbol

那就把所有分开的文件导出名称都修改成一样的"Router"。

只要所有的module/xxx.ts,都修改成

export const Router: Array<RouteRecordRaw> = [...]

module/admin.ts

import { RouteRecordRaw } from 'vue-router';

export const Router: Array<RouteRecordRaw> = [
    {
        path: "/",
        name: "home",
        meta: {
            title: "首页",
        },
        component: () => import("@/views/dashboard/index.vue"),
    },
]

base

const modules = import.meta.glob('./modules/**/*.ts', { eager: true });

Object.values(modules).forEach((val) => {
    const mod = val["Router"]
    const modList = Array.isArray(mod) ? [...mod] : [mod];
    routeModuleList.push(...modList);
  });

如此就全部搞定。。


<div class="contson"> 这是文本 <p>aaaa</p> 这是文本2 <br> 这是文本3< ...