根本原因是vs code语言服务未识别路径映射,需在项目根目录配置jsconfig.json或tsconfig.json,含"baseurl":"."和"paths"映射,并重启语言服务器。

VS Code 里 import 路径标红、Ctrl+点击跳转失效、重命名不联动 —— 这不是文件真丢了,是语言服务压根没认出你的路径规则。 根本原因几乎总是 jsconfig.json 或 tsconfig.json 缺失、错配,或插件没配对。运行时能跑通 ≠ 编辑器能解析,这两套系统完全独立。
为什么 @/xxx 导入总报 Cannot find module
VS Code 的 TypeScript/JavaScript 语言服务不会自动读取 Webpack/Vite 的 resolve.alias,它只认自己的配置文件。即使你项目里已用 Vite 配了 @ 指向 src,VS Code 仍会报错,除非它自己也“知道”这个映射。
- 检查项目根目录(即你通过「File → Open Folder」打开的文件夹)是否存在
jsconfig.json或tsconfig.json - 若不存在,新建一个
jsconfig.json,内容至少包含:{"compilerOptions": {"baseUrl": ".", "paths": {"@/*": ["src/*"]}}} - 确保
src是真实存在的子目录名,大小写必须完全一致(Windows 上容易忽略这点) - 改完后必须执行「Command Palette → Developer: Restart Language Server」,否则缓存不刷新,改了等于白改
path-intellisense 插件配置不生效的常见卡点
这个插件只负责路径补全和显示,不参与模块解析;它和语言服务是两套逻辑。如果只装插件不配 jsconfig.json,它可能连 @ 都不识别。
- 在
settings.json中添加:"path-intellisense.mappings": { "@": "${workspaceRoot}/src" } -
${workspaceRoot}是 VS Code 内置变量,指向你当前打开的工作区根目录,不能手写成./src或绝对路径 - 如果项目是多根工作区(Multi-root Workspace),
${workspaceRoot}可能不准确,此时应改用${workspaceFolder}并确认对应文件夹结构 - 插件默认不自动补全扩展名,如需导入时带
.vue或.ts,加配置:"path-intellisense.extensionOnImport": true
ESLint 和路径提示冲突?其实是同一根源
ESLint 报 import/no-unresolved 错误,或者根本没提示,往往和路径解析失败同源。它依赖 ESLint 自己的解析器(比如 eslint-import-resolver-node 或 eslint-import-resolver-typescript)去查路径,而这些解析器默认也不读 jsconfig.json 的 paths。
- 如果你用的是
eslint-import-resolver-typescript,它会自动读取tsconfig.json;但对jsconfig.json支持不稳定,建议统一用tsconfig.json(哪怕纯 JS 项目) - 如果是
eslint-import-resolver-node,它根本不支持paths,必须换 resolver 或手动配settings:"import/resolver": { "node": { "paths": ["src"], "extensions": [".js", ".ts", ".vue"] } } - 别忘了检查
eslint.nodePath是否指向正确的全局 ESLint 安装位置,否则整个 ESLint 扩展可能静默失效
最常被忽略的一点:所有配置都改完后,必须重启语言服务或整个窗口 —— VS Code 不会热重载 jsconfig.json 或插件映射。缓存不清理,再准的配置也白搭。











