npm Intellisense没反应需同时满足三条件:项目根目录有package.json、node_modules非空、文件语言模式为JS/TS;否则补全静音。

npm Intellisense 为什么没反应?先看这三个硬条件
npm Intellisense 不是装上就灵的“魔法插件”,它必须同时满足三个前提:项目根目录有有效的 package.json、node_modules 目录非空、当前文件语言模式为 JavaScript 或 TypeScript。缺一个,补全直接静音。
- 打开资源管理器,确认
package.json在你打开的 VSCode 工作区最顶层(不是子文件夹里) - 终端切到该目录,运行
ls node_modules(macOS/Linux)或dir node_modules(Windows),看到一堆子文件夹才算数;如果空或报错,立刻npm install - 右下角状态栏必须显示
JavaScript或TypeScript—— 如果是Plain Text,按Ctrl+Shift+P→ 输入Change Language Mode→ 手动选对
import 语句里还是不提示模块名?检查 autoImports 和冲突扩展
即使环境齐备,VSCode 默认可能不自动插入 import 语句,而 npm Intellisense 依赖这个行为才能触发模块名补全。更常见的是,其他补全类扩展在背后抢了控制权。
- 打开
settings.json(Cmd+,→ 右上角“打开设置(JSON)”),确保这两行存在且为true:"javascript.suggest.autoImports": true、"typescript.suggest.autoImports": true - 禁用名字带
Auto Import、Path Intellisense、Import Cost的扩展——它们和 npm Intellisense 在同一阶段解析路径,一山不容二虎 - 禁用后,按
Cmd+Shift+P→ 运行Developer: Restart TS Server,再开一个.js文件试试import {后有没有模块列表弹出
补全出来了但全是 node_modules 里的乱码包?别忘了 jsconfig.json
npm Intellisense 能扫出所有已安装包,但如果你项目用了路径别名(比如 @src/utils),它默认不认识——这时候补全列表会堆满 lodash-esdebugansi-regex 这类底层依赖,真正要用的业务模块反而沉底。
- 在项目根目录新建
jsconfig.json(JS 项目)或tsconfig.json(TS 项目) - 至少包含
baseUrl和paths,例如:{ "compilerOptions": { "baseUrl": ".", "paths": { "@src/*": ["src/*"], "@api/*": ["src/api/*"] } }, "include": ["src/**/*"] } - 保存后必须重启 TS Server(
Cmd+Shift+P→TypeScript: Restart TS server),否则路径别名对 IntelliSense 完全不可见
package.json 的 scripts 字段里怎么补全脚本名?那是另一个功能
很多人搜“npm Intellisense”其实是想在 package.json 的 "scripts" 里写 "dev" 时自动提示 "vite" 或 "eslint" ——这其实不是 npm Intellisense 的职责,而是它同名兄弟插件 npm Intellisense(作者相同)的额外能力,但需要手动启用。
- 确保已安装
npm Intellisense扩展(注意不是npm开头的其他名字) - 打开
package.json,光标定位到"scripts"对象内部,输入双引号后敲",此时应弹出已安装 CLI 工具的常见脚本名(如eslint、prettier、jest) - 如果没反应,检查是否被 ESLint 或 Prettier 扩展劫持了 JSON 补全逻辑——临时禁用它们再试一次
最常被忽略的一点:npm Intellisense 的模块扫描只发生在工作区根目录,它不会递归进 packages/ 子目录或 monorepo 的 workspace。如果你在子包里开发,必须把那个子包设为 VSCode 的独立工作区,否则它根本看不到里面的 node_modules 和 package.json。


















