typescript + vue 项目通过yarn打包后丢到服务器上打开报错,本地运行没问题

如图所示, 感觉是路由加载的问题,麻烦大佬看下代码
image.png
name 报undefined的地方是这里
image.png

index.ts

import Vue from 'vue';
import VueRouter from 'vue-router';
import routeConfig from './route-config';

Vue.use(VueRouter);
const router = new VueRouter(routeConfig);

export default router;

route-config.ts

import { RouterOptions } from 'vue-router';

const pageMap = {};

const requireComponent = require.context('@/views', false, /.vue$/);
requireComponent.keys().forEach((filename) => {
  const component = requireComponent(filename).default;
  const { name } = component;
  pageMap[name] = {
    name,
    path: `/${name}`,
    component,
  };
});

const routes = Object.keys(pageMap).map((name) => pageMap[name]);

const routerConfig: RouterOptions = {
  base: process.env.BASE_URL,
  routes: [
    {
      path: '*',
      redirect: 'homePage',
    },
    {
      path: '/',
      redirect: 'homePage',
    },
    ...routes,
  ],
};
export default routerConfig;

经过分析是打包后通过require.context 批量导入文件的时候这里好像被压缩了
image.png
image.png
image.png

 。打包后这个name 感觉是被压缩了好像,变成n了。所以路由最后成这样了
这是本地的。因此redirect 会一直跳不到homePage,然后就内存溢出了。
image.png
image.png

阅读 2.9k
2 个回答

已解决,通过 componet.options.name 可获取到

难道还不会打开开发模式,看一下 Network 请求的数据是什么吗?对比一下,为什么是undefined啊?

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