带有 Typescript 的 Vue3 路由器:缺少 RouteConfig
Posted
技术标签:
【中文标题】带有 Typescript 的 Vue3 路由器:缺少 RouteConfig【英文标题】:Vue3 Router with Typescript: missing RouteConfig 【发布时间】:2020-10-07 19:20:37 【问题描述】:我从@vue/cli $> vue create my-project
创建了一个新的vue项目,激活了Typescript选项和路由器选项,并使用$>vue add vue-next
升级到vue3 beta。
现在,$>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'
整个文件没那么长,后面会用到RouteConfig:
//index.ts
import RouteConfig, createRouter, createWebHistory from 'vue-router';
import Home from '../views/Home.vue'
const routes: Array<RouteConfig> = [
path: '/',
name: 'Home',
component: Home
,
path: '/about',
name: 'About',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
]
const router = createRouter(
history: createWebHistory(process.env.BASE_URL),
routes
)
export default router
问:什么是正确的RouteConfig类型,我需要createRouter
?
【问题讨论】:
【参考方案1】:你可以这样使用。
import type RouteRecordRaw from 'vue-router';
const router = createRouter(
history: createWebHashHistory(),
routes: basicRoutes as RouteRecordRaw[]
);
【讨论】:
谢谢!那么component: Home as XYZ
的类型是什么?【参考方案2】:
(由于这是预发布:我使用的是 vue-router@4.0.0-alpha.13。)
我遇到了同样的事情。根据 view-router.d.ts,路由数组的正确类型是 RouteRecordRaw
; RouteConfig
用于 createRouter 参数本身。
但是,如果我将数组键入为RouteRecordRaw
,那么我遇到了RouteRecordRaw
定义的问题,该定义由其他几种看起来像未导出的类型组成,因此键入数组导致的问题多于它解决的问题。
我怀疑会出现更好的模式,但目前我将路由数组键入为any
,这可行。
【讨论】:
谢谢,这解决了问题。但是我一直遇到 vue3 + ts 的问题,所以我切换回 vue2(也许是 ts,让我们看看) @Moritz 昨天是我第一次能够编译 TS 和 Vue3+Router 项目,但还处于早期阶段。我知道 Evan You 谈了很多关于 Vue3 比 Vue2 更好地支持 TS,所以我相信它会变得更容易。 太棒了!我希望 vue3 的开箱即用支持会变得更好。现在,我切换回 vue2,最终因为我的 vue3 设置不支持<input type="list" ...
存在另一个问题 - 我正处于学习 vue 和 TS 的阶段,所以这就是我要走的路。跨度>
以上是关于带有 Typescript 的 Vue3 路由器:缺少 RouteConfig的主要内容,如果未能解决你的问题,请参考以下文章
vue3+typescript+vantUi 实现一个带有搜索功能的 picker选择器
vue3+typescript+vantUi 实现一个带有搜索功能的 picker选择器