vue.js - Vue路由器延迟加载在Vite中不起作用(错误: Unknown variable dynamic import)

标签 vue.js vue-cli vite

我在 Vue 路由器中构建了以下代码,它在 Vue-CLI 中完美运行。

        import store from "./../../store/index.js";
        
        function getView(view) {
          return () => import(`@/views/settings/${view}.vue`);
        }
        
        const routes = [
          {
            path: "/myProfile",
            name: "MyProfile",
            component: getView("MyProfile"),
            beforeEnter: (to, from, next) => {
              document.title = "Profile - " + store.getters.getAppName;
              if (store.getters["userStore/authenticated"]) {
                next();
              } else {
                next({ name: "Home" });
              }
            },
          }
        ]
        export default routes;

现在我用 Vite 替换 Vue-CLI,它给出了以下错误。

TypeError: Failed to resolve module specifier '@/views/settings/MyProfile.vue'

当我删除 getView("MyProfile") 函数并直接使用 import 时,它可以工作。

    const routes = [
          {
            path: "/myProfile",
            name: "MyProfile",
            component: () => import('@/views/settings/MyProfile.vue'),
            beforeEnter: (to, from, next) => {
              document.title = "Profile - " + store.getters.getAppName;
              if (store.getters["userStore/authenticated"]) {
                next();
              } else {
                next({ name: "Home" });
              }
            },
          }
        ]

有人可以解释一下原因吗?

最佳答案

Can someone please, explain why?

这是由于汇总限制造成的。 所有导入必须相对于导入文件开始,并且导入不应以变量开始

因此,要使 GetView() 函数正常工作,您必须将别名 (@/) 替换为相对或绝对路径 ../views/src/views :

function getView(view) {
  return () => import(`../views/settings/${view}.vue`);
}

Why it is working when you remove the getView() and you write directly the import directive ?

如果您设置文字字符串,则会解析别名(它最终会变为相对或绝对路径,尊重汇总要求)。。

关于vue.js - Vue路由器延迟加载在Vite中不起作用(错误: Unknown variable dynamic import),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70112215/

相关文章:

javascript - Vue.Draggable 取消选择的事件是什么?

vue.js - Vue Cli 3 本地字体未加载

laravel - 如何配置 nginx、vite 和 laravel 通过反向代理与 HMR 一起使用?

javascript - 当包含在支持 Typescript 的 Vue.js 项目中时,Vuetify 停止工作

css - 如何在 Vue.js 中添加条件样式?

javascript - Vue.js "track-by $index",如何单独渲染列表项

webpack - 如何使用 vue-cli 安装另一个不是最新的 vue 版本

webpack - 更改 Vue 构建 dist 文件前缀

javascript - Vite中如何将静态文件夹同时复制到 "dev"和 "build"?

vite - 我的构建过程中出现了关于 globalThis.process.env.NODE_ENV 的语法错误