集合:使用Vue3 + Vite3重构Vue2项目
问题定位:Vite3无法使用require.context()
问题描述:在route文件夹下创建多个子路由数组,使用require.context()遍历后添加入routes。
* 项目结构:
![项目结构](https://i-blog.csdnimg.cn/blog_migrate/96caf0158fa32c9de3ccccf08d4744ba.png)
let routerList = [];
function importAll (r) {
r.keys().forEach(item => {
routerList.push(...r(item).default);
})
}
importAll(require.context('./', true, /\.router\.js/));
const routes = [
...routerList,
]
解决方案:使用Vite3自带的import.meta.globEager
const files = import.meta.globEager('./routers/*.router.js');
for (const key in files) {
if (Object.hasOwnProperty.call(files, key)) {
if (files[key].default) {
routerList.push(...files[key].default)
}
}
}
const routes = [
...routerList,
]