带 Typescript 的 Vue3 路由器:缺少 RouteConfig

Mor*_*itz 7 typescript vue.js vue-router vuejs3

我从 @vue/cli 创建了一个新的 vue 项目$> vue create my-project,激活了 Typescript 选项和路由器选项,并使用$>vue add vue-next.

现在,$>npm run serve失败了

ERROR in /home/auser/dev/my-project/src/router/index.ts(1,10):
1:10 Module '"../../node_modules/vue-router/dist/vue-router"' has no exported member 'RouteConfig'.

  > 1 | import { RouteConfig, createRouter, createWebHistory } from 'vue-router';
      |          ^
    2 | import Home from '../views/Home.vue'
Run Code Online (Sandbox Code Playgroud)

整个文件并没有那么长,后面会用到RouteConfig:

ERROR in /home/auser/dev/my-project/src/router/index.ts(1,10):
1:10 Module '"../../node_modules/vue-router/dist/vue-router"' has no exported member 'RouteConfig'.

  > 1 | import { RouteConfig, createRouter, createWebHistory } from 'vue-router';
      |          ^
    2 | import Home from '../views/Home.vue'
Run Code Online (Sandbox Code Playgroud)

:我需要的 RouteConfig 的正确类型是什么createRouter

小智 11

你可以这样使用。

import type { RouteRecordRaw } from 'vue-router';

const router = createRouter({
  history: createWebHashHistory(),
  routes: basicRoutes as RouteRecordRaw[]
});
Run Code Online (Sandbox Code Playgroud)


Mat*_*ols 5

(由于这是预发布版本:我正在使用 vue-router@4.0.0-alpha.13。)

我遇到了同样的事情。路由数组的正确类型RouteRecordRaw取决于 view-router.d.ts;RouteConfig用于 createRouter 参数本身。

但是,如果我输入数组,RouteRecordRaw然后我遇到了定义问题,RouteRecordRaw它是由其他几种看起来未导出的类型组成的,因此输入数组会导致比它解决的问题更多的问题。

我怀疑会出现更好的模式,但目前我将路由数组输入为any,这有效。