VSCode自动导入需满足三条件:语言模式为TS/JS、存在tsconfig.json/jsconfig.json、启用autoImports设置;还需在tsconfig中配置paths别名并重启TS服务,JS文件建议补.d.ts声明。

为什么输入工具函数名后不自动加 import?
不是插件没装,而是 VSCode 根本没把当前文件当“模块”处理。常见现象:utils 目录下写了 formatDate,你在新文件里输 formatDate,补全列表里只有函数名,没有带 import { formatDate } from '@/utils' 的选项——这说明语言服务压根没索引你的工具模块。
必须同时满足三个条件,自动导入才可能触发:
- 右下角状态栏显示 TypeScript 或 JavaScript(不能是 Plain Text、HTML 或 Vue (Deprecated))
- 项目根目录存在
tsconfig.json或jsconfig.json(哪怕内容只是{"compilerOptions": {}}) - 设置中
typescript.suggest.autoImports和/或javascript.suggest.autoImports明确为true(不是字符串"true")
如何让 utils 里的函数被正确识别并自动导入?
VSCode 不读 vite.config.ts 或 webpack.config.js 里的别名配置,它只认 tsconfig.json 的 paths。如果你用 @/utils 这种写法,必须显式声明:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"],
"@/utils": ["src/utils/index.ts"],
"@/utils/*": ["src/utils/*"]
}
}
}
改完配置后,务必在命令面板(Ctrl+Shift+P)运行 TypeScript: Restart TS server,否则路径不会生效。
另外注意:如果 utils 是纯 JS 文件(如 src/utils/formatDate.js),且项目是 TS,建议补上 src/utils/formatDate.d.ts 类型声明,否则函数签名可能无法被准确推导,影响补全质量。
Ctrl+. 比回车更可靠,但得先让灯泡出现
依赖“输完回车自动加 import”容易失败,尤其在变量名未完全输对、或光标位置不对时。真正稳定的方式是手动触发快速修复(Quick Fix):
- 输入函数名(比如
debounce),哪怕拼错一半,只要 IntelliSense 能匹配到符号,就按Ctrl+.(Windows/Linux)或Cmd+.(macOS) - 若弹出菜单含 “Import ‘debounce’ from ‘lodash’” 或 “Import ‘debounce’ from ‘@/utils’”,说明语言服务已识别该符号,选中即可插入
- 如果
Ctrl+.没反应,先检查右下角语言模式和tsconfig.json是否就位;再打开开发者工具(Ctrl+Shift+P→Developer: Toggle Developer Tools),看 Console 是否报Cannot find module 'xxx'
保存时自动整理 import,避免手动善后
即使你靠 Ctrl+. 加了 import,也可能漏删未使用项、顺序混乱。启用保存即整理能省掉大量收尾工作:
在 settings.json 中加入:
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
这个动作只作用于当前文件,不会跨文件扫描。但它会做三件事:
- 按字母顺序重排所有
import语句 - 删除当前文件中未使用的导入(比如你加了
import { foo } from 'bar'却没用foo) - 合并重复路径(如两个
import { a } from './utils'和import { b } from './utils'会合成一行)
注意:source.organizeImports 不会帮你决定该用命名导入还是默认导入,也不会从 lodash 这类大包里智能挑出最短路径——它只整理你已经写进去的那些。
路径别名、类型声明、语言服务重启,这三个动作看起来琐碎,但少一个,formatDate 就永远只是一串没 import 的裸名字。











