Vite + Vue3 +TS 项目router配置踩坑记录! ===>“找不到模块“vue-router”或其相应的类型声明。“<===

在使用Vue3、Vite和TypeScript构建项目时,作者遇到了找不到模块“vue-router”的类型声明以及使用useRouter时遇到“Cannotreadpropertiesofundefined(readingpush)”的错误。通过在vite-env.d.ts中声明模块和调整useRouter调用的位置解决了这两个问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

第一个坑:"找不到模块“vue-router”或其相应的类型声明。"

解决 

 第二个坑:Cannot read properties of undefined (reading 'push')

解决:将useRouter()方法的执行位置尽量放靠上一点就行了。

最近在使用vite + vue3 + typescript 写一个项目,在用路由router的时候踩了坑,记录一下。

其实想吐槽的不是这些坑,而是百度的结果,一堆~文章内容都是一样的,还是解决不了问题的那种!!!抄袭意义何在?...

好了,言归正传。

第一个坑:"找不到模块“vue-router”或其相应的类型声明。"

我在vue组件中引入vue-router的useRouter函数时,报的错

奇怪的是,我在ts文件中引入就不会报这个错误?

反正遇到的时候是无厘头的,百度了更是无厘头,搜索出来的都是啥,都是一样的...

整了很久.....

 终于,换个姿势搜索,找到了解决方案,很简单。

解决 

在vite-env.d.ts中,把找不到的模块名称声明一下就行。

这样就好了... 

 可是!麻绳专挑细处断,厄运专找苦命人,刚解决完一个,又来一个!!!

 第二个坑:Cannot read properties of undefined (reading 'push')

 代码片段:

 

这么说?怎么可能?吓的我马上打印router验验真伪: 

 

 

 好吧,它是undefined!!!!人麻了...

解决:将useRouter()方法的执行位置尽量放靠上一点就行了。

 好了,我的路由可以用了  >.<  ,今晚的饭还是香的。

对于使用 Vite + Vue3 + TypeScript + Pinia + Vue Router + Axios + SCSS 并自动导入 API 的设置,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了 Node.js,并且版本大于等于 12.0.0。 2. 创建一个新的 Vue 项目,可以使用 Vue CLI 者手动创建一个空文件夹。 3.项目根目录下,打开终端并执行以下命令安装 Vite: ```bash npm init vite@latest ``` 按照提示选择你的项目配置,包括选择 Vue 3、TypeScript 和其他选项。 4. 进入项目目录并安装依赖: ```bash cd your-project-name npm install ``` 5. 安装 Pinia 插件: ```bash npm install pinia ``` 6. 创建一个 `src/store` 目录,并在其中创建 `index.ts` 文件,用于定义和导出你的 Pinia store。 ```typescript // src/store/index.ts import { createPinia } from &#39;pinia&#39; export const store = createPinia() // 可以在这里定义你的 store 模块 ``` 7.项目根目录下创建 `src/api` 目录,用于存放 API 请求相关的文件。 8. 在 `src/api` 目录下创建一个 `index.ts` 文件,用于自动导入所有 API 文件。 ```typescript // src/api/index.ts const modules = import.meta.globEager(&#39;./*.ts&#39;) const apis: any = {} for (const path in modules) { if (path !== &#39;./index.ts&#39;) { const moduleName = path.replace(/^.\/|\.ts$/g, &#39;&#39;) apis[moduleName] = modules[path].default } } export default apis ``` 这样,你就可以在 `src/api` 目录下创建各种 API 请求的文件,例如 `user.ts`: ```typescript // src/api/user.ts import axios from &#39;axios&#39; export function getUser(id: number) { return axios.get(`/api/user/${id}`) } ``` 然后,在你的组件中使用自动导入的 API: ```typescript import { defineComponent, ref } from &#39;vue&#39; import { useUserStore } from &#39;@/store&#39; import apis from &#39;@/api&#39; export default defineComponent({ setup() { const userStore = useUserStore() const userId = ref(1) const fetchUser = async () => { const response = await apis.user.getUser(userId.value) userStore.setUser(response.data) } return { userId, fetchUser, } }, }) ``` 以上就是使用 Vite + Vue3 + TypeScript + Pinia + Vue Router + Axios + SCSS 并自动导入 API 的基本设置。你可以根据自己的需求进一步配置和扩展。希望对你有所帮助!
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mao.O

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值