Zwx's blog Zwx's blog
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 工作笔记
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档

Zwx

Aal izz well 一切顺利
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 工作笔记
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • 技术文档

  • GitHub技巧

  • Nodejs

  • 博客搭建

  • 工作笔记

  • 模板

  • 日常记录

    • Vue 报错Error error0308010Cdigital envelope routinesunsupported
    • Mac版微信突然显示音频设备启动失败
    • Mac OS 版迅雷,不限速下载,破解
    • 记录Vuepress的一些小问题
    • Mac OS版本Infuse播放器,破解
    • 编译原理期末复习公式
    • 手写简单的Promise、PromiseAll、PromiseRace
    • Vue3 设置动态路由出现Error Unknown variable dynamic import
      • $eventBus 的使用、问题
    • 技术
    • 日常记录
    Zwx
    2023-10-17
    0

    Vue3 设置动态路由出现Error Unknown variable dynamic import

    # Vue3 设置动态路由出现Error: Unknown variable dynamic import

    # 1.问题:vue3做动态路由时出现了报错

    • 这个问题报错的出现因为我们定义 component 路径的时候报错的,我用的是拼接的形式,但官方不支持,下面是错误的代码:
      router.addRoute('main', {
        path: '/main/analysis/overview',
        //这样的做法官方会直接给我们报错
      	component: () => import(`../views${subMenu.url}/${subMenu.url.split('/')[3]}.vue`)
      })
      
      1
      2
      3
      4
      5

    # 2.解决:使用 import.meta.glob

    • 解决方法就是使用 import.meta.glob,获取vue文件的相应路径,它返回的一个对象

      {
        ../views/main/Main.vue: () => import("/src/views/main/Main.vue?t=1693659027055")
      	../views/main/product/goods/goods.vue: () => import("/src/views/main/product/goods/goods.vue")
      }
      
      1
      2
      3
      4

      解决代码:

      //匹配相应路径的所有文件
      const modules = import.meta.glob('../views/main/**/*.vue')
      const filePath = modules['../views/main/product/goods/goods.vue']
      router.addRoute('main', {
        path: '/main/product/goods',
      	component: filePath
      })
      
      1
      2
      3
      4
      5
      6
      7

    总结:vue2好像是可以用拼接的方式,但vue3的时候就会出现报错,只能用 import.meta.glob 获取路径的方式,目前只知道这种方式处理,如果有更好的方法请告诉我!!!!谢谢!!!

    上次更新: 10/17/2023, 3:17:45 PM
    手写简单的Promise、PromiseAll、PromiseRace
    $eventBus 的使用、问题

    ← 手写简单的Promise、PromiseAll、PromiseRace $eventBus 的使用、问题→

    最近更新
    01
    在 M1 芯片 Mac 上使用 Homebrew
    11-08
    02
    GIT 遇到问题
    11-06
    03
    react Router嵌套路由不生效
    10-27
    更多文章>
    Theme by Vdoing | Copyright © 2019-2023 Evan Xu | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×