根本原因是语言服务器tsserver未启动或配置缺失,需确保jsconfig.json存在、语言模式正确、typeroots指向@types、quicksuggestions按上下文对象配置,并重启ts服务器。

为什么装了插件 JS 提示还是不弹出
根本原因通常是语言服务器没跑起来,不是插件没装对。VSCode 的 JavaScript 智能提示依赖 tsserver,它只在有 jsconfig.json 或 tsconfig.json 时才启用完整功能;没有配置文件,tsserver 会退化为只识别原生 API,连 require 或 import 的模块都解析不了。
- 检查右下角语言模式是否为
JavaScript(不是Plain Text或JavaScript React等变体) - 确认项目根目录存在
jsconfig.json,哪怕内容只有{"compilerOptions": {}} - 按
Ctrl+Shift+P运行Developer: Toggle Developer Tools,看 Console 是否报Failed to start language server for 'javascript' - 如果用的是 Yarn/PNPM 工作区或 monorepo,
tsserver可能卡在子包路径外——把jsconfig.json放到真正含 JS 文件的子目录里
editor.quickSuggestions 设成 true 却没效果
这个设置必须按上下文分项开启,全局设 true 不生效。默认值是 {"other": true, "comments": false, "strings": false},但很多人手动改成 true 后反而失效——因为 VSCode 把它当成了布尔值,忽略了字符串和注释场景。
- 正确写法是:在
settings.json中明确指定对象结构:"editor.quickSuggestions": {"other": true, "comments": false, "strings": false} -
"other"控制变量名、函数名、类名等基础补全;关掉它,const foo =后打f就不会提示foo -
"strings"开启后,你在模板字符串里打${会触发变量提示;但多数 JS 项目不需要,留false更干净 - 别信 GUI 设置界面里那个“全部勾选”的快捷操作——它生成的 JSON 常格式错误,直接编辑 JSON 更可靠
第三方库(如 lodash、axios)没提示
不是插件问题,而是类型定义没被加载。VSCode 默认不查 node_modules 里的 @types 包,除非你告诉它路径在哪。
- 确保
jsconfig.json中有"typeRoots": ["node_modules/@types"](TypeScript 项目同理,写在tsconfig.json的compilerOptions下) - 运行
npm install --save-dev @types/lodash @types/axios(注意是--save-dev,不是--save) - 如果用了 pnpm,且
node_modules是硬链接结构,可能需额外加"allowSyntheticDefaultImports": true和"moduleResolution": "node" - 装完别忘了重启
tsserver:按Ctrl+Shift+P→ 输入TypeScript: Restart TS server
JSX/React 项目提示错乱或延迟高
React 的 JSX 语法需要额外解析层,原生 tsserver 处理吃力,尤其在 .jsx 或 .tsx 文件里嵌套多层表达式时。
- 禁用旧版
Vetur(如果有),安装官方ESLint+Prettier+ES7+ React/Redux/React-Native snippets组合 - 在
settings.json中加:"javascript.preferences.jsxAttributeCompletion": "auto",让className=后自动补全 CSS 类名 - 如果用 Tailwind,必须装
tailwindcss-intellisense插件,并确保项目根目录有tailwind.config.js - 延迟高?调低
editor.suggest.delay到80,并关掉editor.suggest.showWords(它会扫整个文件单词表,大型 JSX 文件很慢)
jsconfig.json 的存在性,以及 tsserver 实际运行状态,而不是插件列表里有没有勾上。











