根本原因是TypeScript/JavaScript语言服务未加载成功;需检查状态栏语言标识、配置tsconfig.json/jsconfig.json、启用autoImports选项、正确设置paths路径映射及codeActionsOnSave。

为什么 Ctrl+. 没反应、补全列表不显示 import 项
根本原因不是插件没装,而是 TypeScript/JavaScript 语言服务压根没加载成功。VSCode 的自动导入完全依赖语言服务器(TypeScript Server 或 Pylance),不是靠 UI 层“猜”出来的。
先看状态栏右下角:必须显示 TS、JavaScript 或 Python,且不能带感叹号或写着 Plain Text。如果显示异常:
- 按
Ctrl+Shift+P→ 运行Developer: Toggle Developer Tools,在 Console 里搜Cannot find global type 'Array'—— 这是tsconfig.json缺失的铁证 - 项目根目录手动建一个最小
tsconfig.json:{"compilerOptions": {}}(TS 项目)或jsconfig.json:{"compilerOptions": {"checkJs": true}}(JS 项目) - 再执行
TypeScript: Restart TS server或Python: Restart Language Server,强制刷新上下文
typescript.suggest.autoImports 和 javascript.suggest.autoImports 默认是关的
这两个配置控制的是“输入符号时,IntelliSense 下拉列表里是否出现带 import 前缀的建议项”。它们默认值是 false,重装 VSCode、重置设置后极易遗漏。
打开 settings.json(Ctrl+, → 右上角“打开设置(JSON)”),确认包含:
"typescript.suggest.autoImports": true, "javascript.suggest.autoImports": true
注意拼写:是 autoImports,不是 autoImport,少个 s 就失效。Vue 项目还要额外关掉 vetur.validation.script,否则 Vetur 会劫持建议链路。
@/ 路径提示标红但代码能跑,说明语言服务和打包工具解析路径不一致
Webpack/Vite 能跑 ≠ VSCode 能识别 @/。编辑器只认 tsconfig.json 或 jsconfig.json 里的 paths 配置,不读 vite.config.ts 或 webpack.alias。
检查三件事:
- 项目根目录只放一个配置文件:
tsconfig.json(有.ts文件)或jsconfig.json(纯 JS),两个都存在时tsconfig.json优先,另一个会被忽略 - 配置中必须含
"baseUrl": "."和"paths"映射,例如:{"@/*": ["src/*"]};缺baseUrl,paths直接被无视 - 改完配置后必须执行
Developer: Restart Language Server,缓存不重启就不会更新
保存时不自动整理 import,source.organizeImports 没配对触发时机
"source.organizeImports" 是个“动作”,不是开关。它必须挂到 editor.codeActionsOnSave 下才能生效,单独写在 settings 里毫无作用。
正确写法:
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
这个动作只对当前文件生效,不会跨文件扫描;也不会帮你从 lodash 里智能选 import { debounce } 还是 import debounce from 'lodash/debounce' —— 它只管增删+排序,逻辑判断得靠 ESLint + eslint.codeAction.onSave.fixAll 补位。
最容易被忽略的一点:如果你用的是工作区级 settings.json(.vscode/settings.json),而项目里又装了 workspace 版本的 TypeScript,务必在命令面板里运行 TypeScript: Select TypeScript Version → 选 Use Workspace Version,否则路径解析行为可能错位。


















