先检查createrouter是否默认导出:router/index.ts必须export default router,main.ts中use(router)才有效;若导出为export { router }或漏default,则路由实例未注入,导致页面不跳转、空白。

Vue Router 路由配置写完没跳转?先看 createRouter 是否被正确导出
常见现象是:路由文件写了 const router = createRouter(...),main.js 或 main.ts 里也 import 了,但页面始终不切换、<router-view></router-view> 空白、控制台无报错。根本原因往往是导出/导入不匹配。
-
router/index.ts必须以export default router结尾,不能只写export { router }或漏掉default - 如果用
defineComponent风格封装路由逻辑,记得最终仍要export default实例,而非配置对象 - Vite 项目中,若
main.ts使用createApp(App).use(router).mount('#app'),则router必须是默认导出的可执行实例,不是未调用的createRouter函数
VSCode 里点不了 @/views/HomeView.vue?检查 tsconfig.json 和 Volar 双重路径解析
路径别名跳转失效,90% 不是插件没装,而是两处配置没对齐:TypeScript 编译器和 Volar 语言服务器各自读取路径规则的方式不同。
-
tsconfig.json中必须有"baseUrl": "."和"paths": { "@/*": ["src/*"] },且该文件在 VSCode 当前打开的工作区根目录下 - Volar 的
Take Over Mode必须启用(Cmd+Shift+P →Volar: Switch to Take Over Mode),否则它不会读tsconfig.json的paths - 如果项目用 jsconfig.json(非 TS),Volar 默认不识别,必须手动在 VSCode 设置中加
"volar.ignoreProjectWarning": true并确保jsconfig.json含等效compilerOptions.paths
defineProps 报红、ref 类型不提示?Volar 没接管或 Vetur 还在后台抢资源
这不是代码问题,是插件冲突。Vetur 已停止维护,与 Vue 3 的响应式 API 和类型推导完全不兼容,残留会导致整个 .vue 文件失去类型支持。
- 必须卸载 Vetur —— 即使你没主动装过,某些旧脚手架模板可能自带,检查已安装扩展列表
- Volar 安装后,务必执行
Volar: Switch to Take Over Mode,完成后重启 VSCode;状态栏右下角应显示 “Vue (Take Over)” - 若仍报
defineProps is not defined,打开命令面板运行Developer: Restart Language Server,强制刷新 Volar 上下文
路由懒加载写法被 ESLint 标红?import() 动态导入需显式声明语言选项
ESLint 默认把 import('@/views/LoginView.vue') 当作 CommonJS 的 require 处理,导致 no-unused-vars 或 no-undef 报错,尤其在 setup 语法糖中高频出现。
- 确保项目根目录有
eslint.config.js(非.eslintrc.cjs),且files字段包含'**/*.vue' -
languageOptions.parserOptions.parser必须设为'@typescript-eslint/parser',不能留空或错写成'espree' - 在
rules中加'@typescript-eslint/no-unused-vars': 'off'(仅限 .vue 文件),避免对defineProps/defineEmits误报
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











