qq_41981438 2024-09-10 17:40 采纳率: 62.5%
浏览 26

vue3异步添加路由,打包后报错

//从后端获得了这样的对象
 const item = {
              id: 37,
              code: '11111',
              parent: '22222',
              ancestor: '33333',
              name: 'attackDefenseView',
              path: '/attackDefenseView',
              sort: 1,
              component: '/view/attackDefense/index',
              hidden: false,
              open: false,
              enable: true,
              cache: false,
              icon: 'gongfangpingtai',
              selected: false,
              title: '攻防平台',
              type: 'page',
              created: 1725350026,
              updated: 1725945660,
              have: true,
            }
//然后把它处理成路由
const newItem = {
            path: item.path,
            component: () =>
              import(/* @vite-ignore */ ../..${item.component}.vue),
            name: item.name,
            meta: {
              title: item.title,
              icon: item.icon,
              hidden: item.hidden,
            },
            children: null,
            redirect: null,
          }
//最后添加路由
router.addRoute(newItem )

这样做的话在dev环境下是没问题的,但是在build打包后,会报错Failed to load resource: the server responded with a status of 404 (Not Found)
TypeError: Failed to fetch dynamically imported module: http://127.0.0.1:5500/view/attackDefense/index.vue
尝试过去掉.vue或者改成.js,都不行
问题应该是出在component上,求解

  • 写回答

3条回答 默认 最新

  • 一轮明月照丘壑 2024-09-10 17:41
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你的描述来看,你在开发环境下使用动态导入路由的方式是没有问题的,但是在构建(build)后遇到了资源加载失败的问题。这个问题可能有几个原因:

    1. 路径问题:你需要确保你的动态导入路径是正确的。根据你的代码,你正在尝试从item.component获取组件路径,然后动态导入。你需要确保这个路径在构建后的项目中是存在的。例如,如果你的项目结构在构建后是扁平化的,那么你可能需要调整你的路径。如果 item.component 是相对于源代码的路径,那么在打包后它可能不再是正确的路径。你需要使用正确的构建后路径或使用构建工具提供的别名或变量来确保路径正确。
    2. 服务器配置问题:如果你的服务器配置没有正确地为这些动态导入的资源提供服务,也可能会出现这个问题。你需要检查你的服务器配置,确保它能够正确地提供这些动态导入的资源。特别是如果你的服务器是区分大小写的,而你的文件路径是大小写敏感的,这可能会导致这个问题。
    3. 打包配置问题:确保你的打包配置正确处理了动态导入。如果你使用的是Vue CLI或者Vite等工具进行打包,它们通常会自动处理动态导入。但是如果你使用的是自定义的打包配置或者某些特殊的插件可能会影响到动态导入的处理。你可能需要检查你的打包配置,确认没有忽略或错误处理这些动态导入的路径。

    解决方法可以是:检查并确保路径的正确性、检查和调整服务器配置以及检查和确认打包配置正确处理动态导入。如果你能提供更多关于你的项目结构、服务器配置和打包配置的信息,我可能能提供更具体的解决方案。

    评论

报告相同问题?

问题事件

  • 修改了问题 9月10日
  • 创建了问题 9月10日