path intellisense 不生成路径,而是基于文件结构和 tsconfig/jsconfig 的 baseurl、paths 实时提示合法路径;仅在 import/export/require 等语义上下文中触发补全,且需正确配置语言模式与 editor.quicksuggestions.strings。

VSCode 本身不生成“引用路径”,插件只补全已有路径;所谓“自动生成”,本质是根据当前上下文 + 项目配置,实时提示合法路径候选——不是猜、不是推导、而是读取真实文件结构和别名映射。
Path Intellisense 怎么自动补全 import 路径?
它不是凭空生成路径,而是扫描工作区文件树 + 解析 jsconfig.json 或 tsconfig.json 中的 baseUrl 和 paths,再结合光标位置语义(如 import 后引号内)触发建议。
- 必须确保右下角语言模式是
TypeScript或JavaScript,不是Plain Text -
editor.quickSuggestions.strings必须设为true(仅开quickSuggestions: true不够) - 别名如
@/utils补不全?检查paths的 key 是否以/结尾("@/*": ["src/*"]✅,"@*": ["src/*"]❌) - 改完配置后,务必运行命令面板 →
Developer: Restart TS Server,否则缓存不更新
为什么在 require('./') 里能补全,但在 const p = './' 里不能?
Path Intellisense 只响应「有路径语义」的上下文,不是所有字符串都算数。它内置识别规则,仅在以下语法中激活:
-
import/export语句的模块说明符(from "xxx") -
require()的第一个参数(require("xxx")) - HTML 属性:
src、href、data-src - CSS/SCSS:
@import "xxx"、url("xxx")
而 const p = "./" 是普通字符串赋值,语言服务不认为这是路径上下文,即使开了 strings: true 也不会弹建议。
path-intellisense.mappings 配置填什么?
这个设置项是手动覆盖插件默认行为的兜底方案,但绝大多数情况应该留空——让插件自动从 tsconfig.json 或 jsconfig.json 读取 baseUrl 和 paths。
- 如果非要手动配,格式是对象:
{"@": ["src"], "~": ["src/lib"]} - 键名必须和代码中写的别名完全一致(
@/就填@,不要带斜杠) - 值必须是相对于项目根目录的数组,且路径不能以
./开头(["src"]✅,["./src"]❌) - 优先级:手动 mappings > tsconfig paths > 自动扫描;一旦填了,插件就不再读
tsconfig
补全结果不带 .ts 或 .js 扩展名,能用吗?
能,而且这是有意为之的设计。现代打包器(Vite、Webpack、ESM Node)默认支持扩展名自动解析,写 import { foo } from "@/utils" 比 import { foo } from "@/utils.ts" 更健壮——避免因重命名文件导致大量路径失效。
- 如果你坚持要显式后缀,可关掉插件的
Path Intellisense: Auto Add Extensions(默认关,一般不用动) - 更推荐的做法:统一约定项目内不写扩展名,并在
tsconfig.json的compilerOptions.moduleResolution设为"node"或"bundler" - 注意:CSS/HTML 中的路径补全仍会带扩展名(
logo.png),因为这些场景不走模块解析逻辑
最容易被忽略的一点:插件不会帮你解决“模块找不到”的运行时错误。它只管提示路径是否存在、是否符合别名规则。如果 import 补全成功但执行时报错,问题一定出在构建配置或 tsconfig 的 include/exclude 范围里,而不是补全本身。











