vite vue3 路由配置@找不到文件问题描述

本文讲述了在使用Vite时,在配置路由时遇到的文件路径问题,通过安装path插件并正确设置alias,解决了找不到指定文件的错误,重启项目后即可正常运行。

问题描述

在vite.config.js文件中配置路由的时候,添加路由界面,找不到指定的文件,提示错误,如图所示:

但是换成 ./ 或者 ../ 就正常了,也没有报错问题

解决办法

1.安装一个path的插件

npm install --save-dev @types/node

2.在vite.config.js中配置

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from "path"

export default defineConfig({
    plugins: [vue()],
    resolve: {
        alias: {
            "@": resolve(__dirname, "./src")
        }
    }
})

3.重启项目就ok啦

<think>嗯,用户的问题是在ViteVue3目中如何监听路由变化。我需要结合提供的引用内容来解答。首先,记得用户提到的引用1到3,这些是关于Vue3中使用路由和watch的示例。 首先,用户可能在App.vue中使用<router-view>,如引用1所示。但问题是如何监听路由的变化。在Vue2中,可以直接watch $route对象,但在Vue3的组合式API中,可能需要不同的方法。 引用2提到Vue2中的写法是watch &#39;$route.query.id&#39;,但Vue3需要调整。引用3给出了一个使用watch和useRouter的例子,通过router.currentRoute.value.path来监听路径变化。这说明在Vue3中,应该使用useRouter获取路由实例,然后监听currentRoute的变化。 不过,要注意currentRoute是一个响应式对象,可能需要用函数返回其值,例如watch(() => router.currentRoute.value.path, callback)。同时,可能需要处理立即触发的选,如immediate: true,这样初次加载时也会执行回调。 另外,用户可能需要监听整个路由对象的变化,而不仅仅是路径。比如,查询参数或hash的变化。这时候应该监听整个currentRoute.value,而不仅仅是path属性。 还有,使用useRoute可能更直接,因为它是返回当前路由的响应式对象。所以在组合式API中,使用useRoute,然后watch route的某个属性或整个route对象,可能更简洁。 需要确保用户正确导入useRouter或useRoute,并在setup函数或<script setup>中使用它们。此外,处理监听器的清理也很重要,比如在组件卸载时停止监听,但Vue3的watch会自动处理这些,除非使用的是手动订阅。 总结可能的解决方案:使用watch配合useRoute或useRouter,监听需要的路由属性,并设置immediate选。同时,注意Vue3的响应式系统的变化,确保正确访问.value和响应式依赖。</think>在 Vite + Vue3 目中监听路由变化,可以通过以下三种方式实现: ### 一、使用 watch 监听路由对象 ```typescript import { watch } from &#39;vue&#39; import { useRoute } from &#39;vue-router&#39; const route = useRoute() // 监听完整路由对象变化 watch(() => route, (newVal) => { console.log(&#39;路由变化:&#39;, newVal.path, newVal.query) }, { deep: true, immediate: true }) ``` **特点**:可以监听包含查询参数、哈希等完整路由信息的变化[^3] ### 二、监听特定路径变化 ```typescript import { watch } from &#39;vue&#39; import { useRouter } from &#39;vue-router&#39; const router = useRouter() // 监听路径变化 watch(() => router.currentRoute.value.path, (newPath, oldPath) => { console.log(&#39;路径变化:&#39;, oldPath, &#39;=>&#39;, newPath) }) ``` ### 三、使用导航守卫(全局监听) ```typescript // 在 router/index.ts 中设置 router.afterEach((to, from) => { console.log(&#39;全局路由跳转:&#39;, from.path, &#39;=>&#39;, to.path) }) ``` **适用场景**:需要全局监听路由跳转时使用[^1] ### 四、监听特定路由参数 ```typescript import { watch } from &#39;vue&#39; import { useRoute } from &#39;vue-router&#39; const route = useRoute() // 监听 ID 参数变化 watch(() => route.params.id, (newId) => { console.log(&#39;ID 参数变化:&#39;, newId) }) ``` 这种方式特别适用于需要响应动态路由参数变化的场景[^2] 相关问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值