Vue3+Vite+TS配置@别名后导入.vue组件IntelliSense无提示
Vue3+Vite+TS项目IntelliSense不自动提示.vue组件导入问题
问题现象
- 项目基于Vue3、Vite、TypeScript搭建,期望输入组件导入语句时,VSCode IntelliSense可自动提示可导入的Vue组件,目标导入格式如下:
import VueComponent from '@/components/MyComponent.vue'
- 当前状态:组件导入功能可正常运行,无编译、运行类报错,但输入导入路径时不会自动联想提示
.vue格式的组件文件。 - 初步排查:所有基础配置均正确,问题为Vue开发工具Volar扩展的已知缺陷,具体表现为输入导入路径时不会主动建议.vue组件选项。
已确认无错误的基础配置
1. tsconfig.json路径别名配置
已完成路径别名映射,设置@/*对应./src/*,完整配置如下:
{ "compilerOptions": { "target": "esnext", "useDefineForClassFields": true, "module": "esnext", "moduleResolution": "node", "strict": true, "jsx": "preserve", "sourceMap": true, "resolveJsonModule": true, "isolatedModules": true, "esModuleInterop": true, "lib": ["esnext", "dom"], "skipLibCheck": true, "baseUrl": ".", "paths": { "@/*": ["./src/*"] } }, "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], "references": [{ "path": "./tsconfig.node.json" }] }
2. Vue类型声明文件配置
项目根目录已添加shims-vue-d.ts类型声明文件,内容如下:
declare module "*.vue" { import { defineComponent } from "vue"; const Component: ReturnType<typeof defineComponent>; export default Component; }
3. Vite构建层别名配置
vite.config.ts中已完成构建时的别名映射,通过fileURLToPath将@指向项目src目录,完整配置如下:
import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { fileURLToPath, URL } from "url"; // import path from 'path' // https://vitejs.dev/config/ export default defineConfig({ resolve: { alias: { "@": fileURLToPath(new URL("./src", import.meta.url)), }, }, plugins: [vue()] })
解决方法
前置检查:请先确认VSCode已完全禁用Vetur扩展,避免两款Vue开发扩展冲突导致各类语言服务异常
- 将Volar扩展升级到最新版本(Volar现已更名为Vue - Official),新版本已修复该导入路径自动补全不提示.vue文件的已知问题
- 若暂不升级扩展,输入导入路径时可手动输入
.vue后缀的前2-3个字符触发匹配提示,该缺陷不影响代码实际编译运行,手动补全全路径即可正常使用 - 可额外安装
Path Intellisense扩展作为路径补全辅助工具,该扩展不依赖Vue语言服务,可直接识别路径别名下的所有类型文件,补全.vue组件路径,和Vue - Official扩展无冲突
内容的提问来源于stack exchange,提问作者Deniz
相关产品推荐
相关产品推荐

